5

我像这样更新,在这里找到

在 Linux/Mac 上: npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-b​​rowser,platform-b​​rowser-dynamic,platform-server,router,animations}@latest typescript@latest --节省

当我删除 node_modules 然后npm install我得到这个时,

./~/@angular/core/@angular/core.es5.js 中的警告 5889:15-36 严重依赖:依赖的请求是一个表达式

也许这会帮助有人帮助我。这似乎是 ES5 的问题?

控制台中的当前错误。

在此处输入图像描述

背景

我的项目运行良好,直到我升级到Angular 4昨晚。现在,当我单击链接而不是加载模块(我是延迟加载)时,它告诉我找不到模块。

错误

ZoneAwareError {__zone_symbol__error:错误:未捕获(承诺中):错误:找不到模块'./benefits/benefits.module'。错误:不能……}

有没有其他人分享过这种情况或有任何线索如何解决这个问题,甚至如何解决它?我以为没有重大变化Angular 4

代码示例

包.json

{
  "name": "my-web-application",
  "version": "0.0.0",
  "license": "MIT",
  "angular-cli": {},
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
"private": true,
  "dependencies": {
    "@angular/animations": "^4.0.0",
    "@angular/common": "^4.0.0",
    "@angular/compiler": "^4.0.0",
    "@angular/compiler-cli": "^4.0.0",
    "@angular/core": "^4.0.0",
    "@angular/forms": "^4.0.0",
    "@angular/http": "^4.0.0",
    "@angular/platform-browser": "^4.0.0",
    "@angular/platform-browser-dynamic": "^4.0.0",
    "@angular/platform-server": "^4.0.0",
    "@angular/router": "^4.0.0",
    "angular2-jwt": "^0.1.28",
    "angular2-signaturepad": "^2.2.0",
    "auth0-lock": "^10.5.0",
    "core-js": "^2.4.1",
    "ng2-bootstrap": "^1.3.3",
    "ng2-charts": "^1.5.0",
    "ng2-toasty": "^2.5.0",
    "rxjs": "^5.2.0",
    "typescript": "^2.2.1",
    "zone.js": "^0.7.6"
  },
  "devDependencies": {
    "@angular/cli": "1.0.0-beta.32.3",
    "@angular/compiler-cli": "^2.4.0",
    "@types/jasmine": "2.5.38",
    "@types/node": "~6.0.60",
    "codelyzer": "~2.0.0-beta.4",
    "jasmine-core": "~2.5.2",
    "jasmine-spec-reporter": "~3.2.0",
    "karma": "~1.4.1",
    "karma-chrome-launcher": "~2.0.0",
    "karma-cli": "~1.0.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "karma-coverage-istanbul-reporter": "^0.2.0",
    "protractor": "~5.1.0",
    "ts-node": "~2.0.0",
    "tslint": "~4.4.2",
    "typescript": "~2.2.1"
  }
4

1 回答 1

2

在升级到 Angular 4.0 时,我遇到了一些您所描绘的错误:

Critical dependency: The request of the dependency is an expression.

将 angluar-cli 更新到最新为我解决了这个问题:

  1. 停止ng serve(如果正在运行)。
  2. npm install @angular/cli@latest --save-dev
  3. ng serve

希望这也能解决您的 zone.js 问题(请随时通知我)。

警告:

The <template> element is deprecated. Use <ng-template> instead...

很可能是由使用不推荐使用的语法(或者您在代码中)的库(可能是ng2-bootstrap,ng2-chartsng2-toasty?)引起的template,因此您可能也想尝试升级它们——如果有更新的版本。我也收到了此弃用警告,但我有一个尚未更新到 4.0 的依赖项,因此接下来的几天我将继续使用它。

注意:我不是这些升级说明的忠实拥护者,因为在某些项目中逐字逐句(就像我最初所做的那样,没有注意)会为您提供这两者dependencies以及devDependencies对同一库的不同版本的引用。例如,现在@angular/compiler-clipackage.json:4.02.4.

更新完整性

不幸的是,在wuno的情况下,要完成升级,他必须做到:

  1. 创建一个新项目。
  2. 更新它。
  3. src目录替换为他现有项目中的目录。
  4. npm install并更新package.json他的额外包。

根据他的最终评论:

我必须创建一个新项目,对其进行更新,将 src 目录替换为我现有项目中的目录,然后使用我的额外包进行 npm install 和更新 package.json。

我们从来没有完全找出导致他在他的特定情况下重新创建项目的问题的原因,但升级 CLI 最终解决了原始问题中的问题。

于 2017-03-27T18:01:27.707 回答