Grunt wiredep:app没有找到文件或目录bower.json。

42
我正试图将我的Yeoman的Angular应用部署到生产服务器上。当我尝试运行grunt build命令时,会出现以下错误:

Running "wiredep:app" (wiredep) task Warning: ENOENT, no such file or directory '/usr/share/nginx/html/data/gaia-app/app/bower.json' Use --force to continue.

如果我使用grunt --force,我的应用程序会崩溃...
我使用的是Ubuntu 14.04。
有任何想法吗?

1
今天早上我也收到了这个消息。但是对于 grunt serve。昨天它没有任何问题。 - lfx
但是如果grunt无法正常工作,它将无法按照应有的方式构建您的应用程序。 - doron
在 OS X Mavericks 中也遇到了同样的问题。重新安装操作系统后,我的项目无法再像以前那样运行grunt serve命令,除非加上--force参数(还有一些 CSS 错误)。 - fer
同样的问题。我已经尝试重新安装Node和npm以及清除所有缓存,但结果仍然相同。 - Alan Quigley
5个回答

86

根据您想要使用的wiredep版本,此问题有两种解决方案。

如果您想要使用'^1.9.0'版本,请确保从您的Gruntfile.js文件中删除cwd属性。如果您是angular-generator用户,则这是常见问题,因为当前在wiredep任务的配置中指定了cwd属性。

如果您不介意使用'1.8.0'版本,请确保在package.json文件中固定该版本。如果您通过grunt-wiredep包含wiredep,则必须手动添加并固定它。如果您坚持使用'1.8.0'版本,则需要在任务的配置中保留cwd属性。


正是我需要修复的。 - christang
2
在Gruntfile中将版本固定为1.8.0对我有效。 - Paul McClean
1
使用 yo angular 设置 wiredep 为 1.7.0,升级到 1.9.0 并删除 cwd 属性解决了我的问题,奇怪的是另一个项目在不更改这个设置的情况下能正常工作。 - ronnyfm
1
@joshs,指的是哪个cwd?是在imagemin下的这个:{ dist: { files: [{... ? - Lawrence I. Siden
1
@joshs,你能解释一下在wiredep任务的配置中指定cwd属性的“当前问题”吗?也就是说,问题出在哪里? - Startec
你太棒了伙计!真的! :) 谢谢! - Refilon

28

在Google上找了很久之后,Josh的解决方案解决了我的问题。我只是删除了<%= yeoman.app %>


wiredep: {      
  options:  { */code was here */ }
}

这解决了我的问题,最新的yeoman angular生成器有一些问题,我已经调试了一整天。 - Marcus Showalter
我从 wiredep 中删除了整个 options 对象以消除错误。 - race_carr

4

我在Melmoth的回答中找到了这个答案:

Grunt wiredep:app 无法找到 Bower 包

还有在Gruntfile.js文件中注释掉第166行:

// cwd: '<%= yeoman.app %>'

对我来说解决了问题。


根据要求添加细节

我正在进行 Yeoman 1 小时 codelab http://yeoman.io/codelab.html

安装后,我运行 grunt serve,得到一个错误:Running "wiredep:app" (wiredep) task Warning: ENOENT, no such file or directory '../charlottesFolder/app/bower.json'

我尝试将:

charlottesFolder/bower.json 移动到 charlotteFolder/app/bower.json(不要这样做,因为是错的)

然后抛出错误:Running "wiredep:app" (wiredep) task Cannot find where you keep your Bower packages.

这让我看到了Melmoth的答案,对于Cannot find Bower packages - 他的解决方案与注释掉Gruntfile.js中的cwd行(目前是第166行)一起使用。


你能再加一些细节吗?谢谢。 - C R
1
已经添加了更多细节到答案中。希望能有所帮助。 - cfranklin
感谢提到准确的参考“gruntfile.js中的第166行”。 - Muhammad Suleman

4

我刚刚尝试了这个提出的解决方案,它报告说无法找到应该安装 bower 组件的位置。 - joshs

-1

你需要将grunt-wiredep依赖设置为固定版本。

"grunt-wiredep": "1.8.0",


我在我的package.json中将grunt-wiredep升级到1.8,但没有任何改变。我还尝试了joshs的解决方案(1.9和无cwd,1.8与默认的yeoman's angular-generator's cwd),但仍然收到相同的警告消息。 - fer
wiredep: { options: { // cwd: '<%= yeoman.app %>' }, - Züthär Bärnd
有可能 'cwd' 不是明确来自于你的 Grunt 配置,而是来自于在 wiredep 之前运行的其他任务 - 我曾经遇到过类似的问题,在 wiredep 之前我运行了一些测试,其中一个测试包含了一个改变目录的命令 - 检查一下这个问题。 - liron_hazan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接