我安装了“angular-i18n”作为 bower 依赖项。
当我运行 grunt serve
或 grunt build
我收到警告:
angular-i18n was not injected in your file. Please go take a look in "/$APP_ROOT/bower_components/angular-i18n" for the file you need, then manually include it in your file.
如何删除此消息?
让 grunt 将此文件插入我的 index.html 是否会删除此警告?
最佳答案
背景
看来您的 Grunt任务正在使用 wiredep
看看你的Bower依赖项并将用于加载其关联文件的标签(link
用于 CSS,script
用于 JS 等)注入(inject)您的 HTML。wiredep
通过查看 bower.json
来做到这一点在你的项目中找到你需要的文件,然后查看 bower.json
每个依赖项的文件以找出它们需要什么,依此类推。开发了依赖树,wiredep
使用 main
property in the bower.json
文件来确定每个所需包中的哪些文件应该链接到您的 HTML 中。
当软件包没有适当的 bower 配置(缺少 bower.json
或缺少/不正确的 main
属性)时,wiredep
警告您该问题,以便您知道它无法自动添加您需要的内容。换句话说,它告诉您并非所有 Assets 都已添加到您构建的 HTML 中,您需要手动干预以添加缺失的内容。
通用解决方案
通常,您无法在自己的代码中执行任何操作来纠正此问题。在您的 HTML 中手动链接文件(在 wiredep
标记区域之外以避免被覆盖)将确保您的项目正常工作。 wiredep
但是,它会在运行时始终警告您,因为包本身仍然存在问题。您需要向问题包的所有者提出问题,以要求他们更正其打包元信息。
您遇到问题的项目
我 searched bower for the angular-i18n
package发现项目托管在https://github.com/angular/bower-angular-i18n .如果你看 angular-i18n
's bower.json
您可以看到它缺少 main
属性(property)。这就是发出警告的原因。
但事实证明,这个项目不提供 main
似乎是合适的。属性(property)。 documentation for angular-i18n
表明你应该 bower install
它,然后手动链接到适合您所需语言环境的文件。此软件包不适合列出 main
文件,因为它提供了许多文件,这些文件都不应该由软件包规定为必要的——这是开发人员的选择。
这种情况的可能解决方案
如果警告确实困扰您,或者您不喜欢手动链接到文件的需要,您可以将此包 fork 到您自己的 GitHub 帐户并修改 bower.json
文件指向 main
到您要加载的文件。然后您将删除 angular-i18n
作为您项目的依赖项,并将您的 fork 存储库添加为依赖项。
注意事项:
angular-i18n
被列为您自己项目的显式依赖项,并且不会作为另一个项目的依赖项加载。如果另一个项目正在加载此包,则您必须从树的底部开始 fork 项目,以便您可以覆盖每个项目的配置。 总而言之,在这种情况下,最好手动链接到您想要的文件并忽略警告。
关于angularjs - 使用 Grunt 时删除包 "was not injected in your file"的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30076589/