【问题标题】:Yeoman for Angular, then "grunt serve" won't startYeoman for Angular,然后“grunt serve”将无法启动
【发布时间】:2013-12-09 16:26:28
【问题描述】:

这是我第一次使用 yeoman 为 AngularJS 应用设置脚手架,我不得不承认我可能是 nodeJS、grunt 和 bower 世界的新手。

所以,这是我到目前为止所做的:

  • 我确保安装了 yeoman、grunt-cli 和 angular-generator 软件包

    npm install -g yo grunt-cli bower
    npm install -g generator-angular
    
  • 生成了我的应用

    yo angular
    

    我也试过了:

    yo angular --min-safe
    

到目前为止,al 似乎还不错。在给定的选项之间,我选择 Twitter Bootstrap 之一,没有角度依赖,并覆盖我的本地 .gitignore 文件。

毕竟,我尝试运行我的应用程序:

grunt serve

此时,grunt 抱怨它没有本地安装到项目中,所以我运行:

npm install grunt --save-dev

再次不,尝试运行应用程序:

grunt serve

这就是我被阻止的地方:

C:\Projects\what-now>grunt serve
Running "serve" task

Running "clean:server" (clean) task

Running "concurrent:server" (concurrent) task

Running "copy:styles" (copy) task

Done, without errors.
    Warning:
    C:\Projects\what-now\node_modules\grunt-contrib-compass\node_modules\tmp\lib\tmp.js:261
      throw err;
            ^
    TypeError: Cannot read property 'stdout' of undefined
        at compile (C:\Projects\what-now\node_modules\grunt-contrib-compass\tasks\compass.js:37:10)
        at C:\Projects\what-now\node_modules\grunt-contrib-compass\tasks\compass.js:68:7
        at C:\Projects\what-now\node_modules\grunt-contrib-compass\tasks\lib\compass.js:121:11
        at _fileCreated (C:\Projects\what-now\node_modules\grunt-contrib-compass\node_modules\tmp\lib\tmp.js:172:7)
        at C:\Projects\what-now\node_modules\grunt-google-cdn\node_modules\bower\node_modules\rimraf\node_modules\graceful-fs\graceful-fs.js:53:5
        at C:\Projects\what-now\node_modules\grunt-google-cdn\node_modules\bower\node_modules\rimraf\node_modules\graceful-fs\graceful-fs.js:62:5
        at OpenReq.Req.done (C:\Projects\what-now\node_modules\grunt-google-cdn\node_modules\bower\node_modules\fstream\node_modules\graceful-fs\graceful-fs.js:142:5)
        at OpenReq.done (C:\Projects\what-now\node_modules\grunt-google-cdn\node_modules\bower\node_modules\fstream\node_modules\graceful-fs\graceful-fs.js:64:22)
        //... stack trace continues ...

查看在 compass 的 compile 方法中爆炸的代码,我发现如下:

child.stdout.pipe(process.stdout);

这让我觉得child 出于某种原因未定义,而这个变量来自对grunt.util.spawn 的调用。这是我不知所措的地方。

我是否缺少任何依赖项?我是否缺少任何配置?

信息:

  • 操作系统:Windows 8 x64
  • 节点:v0.10.22

【问题讨论】:

  • 我很高兴您将错误的全文放入您的问题中。在我巧妙地决定破坏我的 ruby​​ 配置后,为我省去了很多麻烦。

标签: node.js angularjs gruntjs yeoman


【解决方案1】:

对 Ember 执行相同的程序,运行 grunt。收到错误“TypeError:无法读取未定义的属性‘stdout’。” gem install compass (ruby 已经安装在我的 Windows 7 64 位上),即使 compass 应该更早安装并且这有效。跑咕噜咕噜发球没有问题。

【讨论】:

    【解决方案2】:

    *叹气*,对不起。

    我只需要写下这个问题,然后弄清楚我需要安装 Ruby 和 compass gem。现在它是有道理的:编译过程不会产生。

    安装 Ruby 后,运行:

    gem install compass
    

    你应该很高兴。

    编辑: 安装 Ruby 后,您需要确保将 ruby​​ 运行时文件的路径添加到 PATH 变量中。 (感谢 JagWire!)

    【讨论】:

    • 我还要说您需要将 ruby​​ 安装的 bin 文件夹路径附加到全局路径环境变量中。
    • 只有我一个人,还是有人想知道为什么我需要安装 ruby​​ 才能使用 yeoman 来设置 Angular 或 ember 项目?
    • @fool4jesus 这是因为 Compass 是用 Ruby 编写的。如果一切都用 nodejs 运行就好了。我只是希望有一个更有用的错误消息!
    • @ScottCornwell 是的,我认为是这样。看起来很奇怪-正如您所说,错误消息肯定可以与改进有关。 :-)
    • @JossefHarush 最初的问题是关于 Windows 环境的上下文,它只是关于下载和执行安装程序——你认为指定如何安装 ruby​​ 是否有用,因为有几种方法可以去关于它?
    【解决方案3】:

    在 windows 上我安装了一些 ruby​​:

        C:\ruby187
    

        C:\Ruby200-x64
    

    在两个地方安装指南针,使用:

        gem install compass
    

    这解决了我在 Windows 8 64 位上的问题

    【讨论】:

      猜你喜欢
      • 2015-07-28
      • 2015-01-06
      • 2016-01-23
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2015-02-12
      • 1970-01-01
      相关资源
      最近更新 更多