Bower:多个版本的 angular 似乎在我的项目上运行



在命令的末尾bower update。我发现了以下警告:

Please note that,
     angular-bootstrap#2.5.0 depends on angular#>=1.4.0 which resolved to angular#1.5.11
     angularytics#0.4.0 depends on angular#* which resolved to angular#1.5.11
     angular-gettext#2.3.8 depends on angular#>=1.2.0 which resolved to angular#1.5.11
     angular-pnotify#0.1.2 depends on angular#~1.5.5 which resolved to angular#1.5.11
     angular-local-storage#0.5.2 depends on angular#^1.x which resolved to angular#1.5.11
     angular-marked#1.2.2 depends on angular#>= 1.3.0 which resolved to angular#1.5.11
     ng-videosharing-embed#0.3.7 depends on angular#>= 1.2.0 which resolved to angular#1.5.11
     ngSmoothScroll#2.0.0 depends on angular#^1.2.0 which resolved to angular#1.5.11
     ng-file-upload#12.2.13 depends on angular#>1.2.0 which resolved to angular#1.5.11
     ng-sortable#1.3.7 depends on angular#>=1.3.0 which resolved to angular#1.5.11
     textAngular#1.5.16 depends on angular#>=1.3.x which resolved to angular#1.5.11
     angular-animate#1.6.1, angular-cookies#1.6.1, angular-resource#1.6.1, angular-route#1.6.1, angular-sanitize#1.6.1, angular-touch#1.6.1 depends on angular#1.6.1 which resolved to angular#1.6.1                                               
     the-web-project depends on angular#~1.6.1 which resolved to angular#1.6.1
 Resort to using angular#~1.6.1 which resolved to angular#1.6.1
 Code incompatibilities may occur.

我的结论是,我的应用程序上运行了两个版本的 angular。这是真的吗?有没有简单的方法可以解决这个问题?

编辑

我正在添加我的bower.json,因为它已经包含一个指定angular版本的resolutions部分。

{
  "name": "my-web-project",
  "version": "2.3.0",
  "dependencies": {
    "jquery": "~3.1.1",
    "angular": "~1.6.1",
    "angular-animate": "~1.6.1",
    "angular-bootstrap": "~2.5.0",
    "angular-bootstrap-colorpicker": "~3.0.25",
    "angular-cookies": "~1.6.1",
    "angular-gettext": "~2.3.8",
    "angular-local-storage": "~0.5.2",
    "angular-marked": "~1.2.2",
    "angular-pnotify": "~0.1.2",
    "angular-resource": "~1.6.1",
    "angular-route": "~1.6.1",
    "angular-sanitize": "~1.6.1",
    "angularytics": "~0.4.0",
    "base64-angular": "~1.0.0",
    "bootstrap": "~3.3.7",
    "es5-shim": "~4.5.9",
    "jquery-ui": "~1.12.1",
    "json3": "~3.3.2",
    "marked": "~0.3.6",
    "md5-jkmyers": "~0.0.1",
    "moment": "~2.17.1",
    "momentjs": "~2.17.1",
    "ng-file-upload": "~12.2.13",
    "ng-sortable": "~1.3.7",
    "ngSmoothScroll": "~2.0.0",
    "textAngular": "~1.5.16",
    "underscore": "~1.8.3",
    "underscore.string": "~3.3.4",
    "angular-touch": "~1.6.1",
    "ng-videosharing-embed": "~0.3.7",
    "ua-parser-js": "~0.7.12",
    "angular-spinners": "~3.1.2",
    "angular-i18n": "^1.6.1",
    "angular.uuid2": "angular-uuid2#*"
  },
  "devDependencies": {},
  "resolutions": {
    "angular": "~1.6.1",
    "jquery": "~3.1.1"
  },
  "overrides": {
    "bootstrap": {
      "main": [
        "less/bootstrap.less",
        "dist/css/bootstrap.css",
        "dist/js/bootstrap.js"
      ]
    },
    "pnotify": {
      "main": [
        "dist/pnotify.js",
        "dist/pnotify.css",
        "dist/pnotify.buttons.css",
        "dist/pnotify.buttons.js"
      ]
    }
  }
}

每个 bower 组件都有自己的依赖项。这可能是一系列版本或固定静态版本。如果多个组件需要不同版本(不重叠版本范围)的角度,则会出现此警告。然后,您可以通过定义例如角度的resolution并设置固定版本来决定应包含哪个版本。这可能会导致运行时不兼容,但最终,您的项目中只有一个版本在运行。通常,如果只有一个或两个依赖项需要旧版本的 angular,这不是问题。

这是另一个问题的答案,它解释了决议的定义:链接。

最新更新