angularjs - 使用 Grunt 时删除包 "was not injected in your file"的警告?

标签 angularjs gruntjs bower

我安装了“angular-i18n”作为 bower 依赖项。

当我运行 grunt servegrunt 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 存储库添加为依赖项。

注意事项:

  • 如果您不熟悉维护 Git 存储库/ fork ,这可能会导致无法保持最新​​状态。
  • 这仅适用于 angular-i18n被列为您自己项目的显式依赖项,并且不会作为另一个项目的依赖项加载。如果另一个项目正在加载此包,则您必须从树的底部开始 fork 项目,以便您可以覆盖每个项目的配置。

  • 总而言之,在这种情况下,最好手动链接到您想要的文件并忽略警告。

    关于angularjs - 使用 Grunt 时删除包 "was not injected in your file"的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30076589/

    相关文章:

    javascript - 排除表中 OrderBy 上的项目 - AngularJS

    angularjs - 设置 ng-htmljs-preprocessor karma 预处理器

    node.js - 使用 npm list 时 'invalid' 是什么意思?

    angular - Grunt Serve 停止工作并出现 cdnify 加载错误

    angularjs - 如何在 dist 目录而不是 app 目录中运行 grunt 服务器?

    bower - 如何找到未使用的 bower 依赖项

    javascript - 如何根据 Angularjs 接收到的数据在我的 JSON 对象中创建动态键?

    javascript - 使用不同的窗口大小运行 Protractor 测试?

    javascript - 如何将参数传递给 grunt 任务?

    javascript - GruntJs 任务问题