为什么Bower说Angular依赖于随机的东西?

3

我正在尝试安装一个包,例如bower install restangular --save

然后Bower要求我选择一个Angular版本:

> Unable to find a suitable version for angular, please choose one:
>     1) angular#1.2.6 which resolved to 1.2.6 and has ang-changeorg, angular-cookies#1.2.6, angular-mocks#1.2.6, angular-resource#1.2.6,
> angular-sanitize#1.2.6, angular-scenario#1.2.6 as dependants
>     2) angular#1.2.17-build.226+sha.b6388b3 which resolved to 1.2.17-build.226+sha.b6388b3 and has angular-animate#1.2.17-build.226+sha.b6388b3 as dependants
>     3) angular#* which resolved to 1.2.18 and has restangular#1.4.0 as dependants
>     4) angular#~1.2.0 which resolved to 1.2.19-build.258+sha.ea653e4 and has angularfire#0.7.1 as dependants
>     5) angular#>= 1.0.8 which resolved to 1.3.0-build.2845+sha.e57ad6a and has angular-ui-router#0.2.10 as dependants
> 
> Prefix the choice with ! to persist it to bower.json

在这些选项中,ang-changeorg 是我本地另一个项目,与我当前的工作目录无关。
我的当前项目的 bower.json 如下所示:
{
  "name": "ang-changeorg",
  "version": "0.0.0",
  "appPath": "public",
  "dependencies": {
    "angular": "1.2.6",
    "json3": "~3.2.6",
    "es5-shim": "~2.1.0",
    "jquery": "~1.10.2",
    "bootstrap": "~3.0.3",
    "angular-resource": "1.2.6",
    "angular-cookies": "1.2.6",
    "angular-sanitize": "1.2.6",
    "firebase": "~1.0.11",
    "angularfire": "~0.7.1",
    "spin.js": "~2.0.0",
    "angular-ui-router": "~0.2.10",
    "angular-animate": "~1.2.16",
    "ng-file-upload": "~1.4.0"
  },
  "devDependencies": {
    "angular-mocks": "1.2.6",
    "angular-scenario": "1.2.6"
  },
  "resolutions": {
    "angular": "1.2.6"
  }
}

bower cache clean 无法解决此问题。

为什么 bower 列出 ang-changeorg 作为一个依赖项?关于这些 AngularJS 版本依赖项是如何工作的,更清晰的解释将会很棒。


我已经很久没有使用Bower了,但是看起来你当前的项目可能位于ang-chageorg目录下的一个文件夹中。因此,它假定顶级项目缓存是应该从中复制的那个。你可以将所有的bower.json文件重命名为bower.json.old,然后再试一次来测试这个假设。 - Brian Webb
能否请您使用标准的句子大小写书写标题,并对名称等内容进行必要的大写处理?这可能看起来是一件小事,但几乎所有的标题都是全小写的,这会增加其他人在改进您的帖子时的编辑工作量。 - halfer
3个回答

5

这是因为在你的bower.json文件中,你的项目名称是ang-changeorg。

而该文件中的所有依赖项:

"dependencies": { "angular": "1.2.6", "json3": "~3.2.6", "es5-shim": "~2.1.0", "jquery": "~1.10.2", ...

都是与“name”:“ang-changeorg”相关的依赖项。

因此,ang-changeorg依赖于angular#1.2.6,因为你的bower文件中指定了版本1.2.6的angular:

"dependencies": { "angular": "1.2.6",


我没有看到我使用了错误的项目名称!感谢您的发现。 - Connor Leech

4
您的文件中列出的每个软件包都有自己的文件,其中列出了另一组依赖项。因此,当它说ang-changeorgangular#1.2.6作为依赖项时,这是因为ang-changeorg软件包在其文件中列出了angular#1.2.6。请注意,HTML标签将保留。

2
考虑在所有的Bower调用中升级到最新的Angular 1.2.18版本,您有一些混合依赖项,很可能Restangular更喜欢最新或至少与最新版本匹配("angular-animate":“~1.2.16”)。我认为您不会看到任何破坏性的变化。

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