Yeoman for Angular,然后“grunt serve”将无法启动
Posted
技术标签:
【中文标题】Yeoman for Angular,然后“grunt serve”将无法启动【英文标题】:Yeoman for Angular, then "grunt serve" won't start 【发布时间】: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 配置后,为我省去了很多麻烦。 【参考方案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 位上的问题
【讨论】:
以上是关于Yeoman for Angular,然后“grunt serve”将无法启动的主要内容,如果未能解决你的问题,请参考以下文章
我应该为新的 Angular 应用程序使用 angular-seed 还是 yeoman?
Yeoman 构建的 Angular 应用程序未将引导字体部署到 Heroku
如何部署 yeoman angular-fullstack 项目?
npm / yeoman 在没有 sudo 的情况下安装 generator-angular
Yeoman Angular.js grunt serve-d 应用程序从 livereload.js?snipver=1 延迟很长