Bower:找不到 Angular 的合适版本

Bower: Cannot find suitable version for Angular

这可能是一个新手问题,但我不明白为什么 bower (1.7.9) 找不到适合 Angular 的版本,而我 运行:

bower install

或者当它找不到适合 Angular 的版本时-翻译当我 运行:

bower update

(为什么当我 运行 上面的任一命令时它甚至给我一个不同的错误?)

我已将每个软件包更新到最新版本,但我没有找到任何需要旧版本 Angular 的软件包。这是我的 bower.json:

{
  "name": "test",
  "homepage": "http://www.google.nl",
  "version": "0.2.1",
  "ignore": [
    ".jshintrc",
    "**/*.txt"
  ],
  "dependencies": {
    "angular": "1.5.9",
    "angular-animate": "1.6.0-rc.2",
    "angular-bootstrap": "2.3.0",
    "angular-cookies": "1.6.0-rc.2",
    "angular-hotkeys": "0.2.2",
    "angular-i18n": "1.6.0-rc.2",
    "angular-route": "1.6.0-rc.2",
    "angular-translate": "2.13.1",
    "angular-sanitize": "1.6.0-rc.2",
    "angular-translate-loader-static-files": "2.8.1",
    "angular-ui-bootstrap-datetimepicker": "2.0.3",
    "angular-loading-bar": "0.9.0",
    "jquery": "3.1.1",
    "moment": "2.17.1",
    "ng-dialog": "0.6.4",
    "ng-focus-if": "1.0.7",
    "ng-tags-input": "3.1.1",
    "ngInfiniteScroll": "https://github.com/hlsolutions/ngInfiniteScroll.git#scroll-on-any-lement",
    "angular-ui-select": "0.19.6",
    "placeholders": "https://github.com/jamesallardice/Placeholders.js.git#~4.0.1",
    "angular-atomic-notify": "~1.0.3",
    "underscore": "https://github.com/components/underscore.git#~1.8.3",
    "angulartics-google-analytics": "0.4.0",
    "angular-ui-tinymce": "~0.0.17",
    "angular-collection": "~0.5.2",
    "angular-mocks": "1.6.0-rc.2",
    "angular-translate-handler-log": "2.13.1"
  }
}

看看 similar question 的最终答案是否有帮助

"Instead of running bower install library -save I did added the latest versions of the libraries directly to my bower.json and added the resolutions..."

我看到的问题与:

"angular-translate": "2.13.1",
...
"angular-translate-loader-static-files": "2.8.1",

问题是: - 您正在请求确切的版本 - angular-translate-loader-static-files 也请求 angular-translate,但它需要相同的版本 (2.8.1) - Bower 不允许同一个库的多个版本

一个解决方案是: "angular-translate-loader-static-files": "2.13.1"

同样的问题是 angular,你应该使用 "angular": "1.6.0-rc.2" 因为你已经为依赖于 [=27= 的其他模块请求了这个版本].

但是,这不一定是最好的方法,因为例如我看到您正在使用一些需要 angular < 1.6 (ngInfiniteScroll) 的库,因此您将无法在如果你真的想使用 1.6 版本,你的项目。

一个更好的主意是更宽松地要求版本(例如 "angular": ">=1.5.x"),然后让 bower 为您的所有依赖项找到最合适的版本 - 但是这很可能需要您使用旧版本或冒不兼容问题的风险。

当您已经在项目的 bower_components 中下载了旧版本的库(此处为 angular)时,通常会发生这种情况。

一般来说,为了解决这个问题,我只是在重新安装 Bower 之前清空我的 bower_components,一切都会恢复正常。

希望这对您有所帮助。