【问题标题】:Angular Routing Not Working After Upgrading to Angular 4升级到 Angular 4 后,Angular 路由不起作用
【发布时间】:2017-08-20 11:41:21
【问题描述】:

我是这样更新的,found here

在 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 --save

当我删除 node_modules 然后 npm install 我明白了,

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

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

控制台中的当前错误。

背景

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

错误

ZoneAwareError {__zone_symbol__error: Error: Uncaught (in promise): 错误:找不到模块“./benefits/benefits.module”。错误:不能 ……}

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

代码示例

package.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"
  }

【问题讨论】:

  • 更新到 angular4 的步骤是什么
  • 我更新了问题
  • 你最终的 Angular-cli 版本是什么?
  • 我在全球升级到最新版本,然后在安装包 json 之前在本地安装。我最终得到了这个并且它有效,所以我没有碰它,“angular-cli”:“1.0.0-beta.28.3”,

标签: angular platform-server


【解决方案1】:

我在升级到 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...

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

注意:我不是那些upgrade instructions 的忠实粉丝,因为在某些项目上逐字逐句(就像我最初所做的那样,没有注意)给你dependencies 和@987654334 @ 对同一库的不同版本的引用。例如,现在在您的package.json 中引用了两个版本的@angular/compiler-cli4.02.4

完整性更新

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

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

根据他的最终评论:

我必须创建一个新项目,更新它,替换 src 目录 使用我现有项目中的一个,然后 npm install and update package.json 和我的额外包。

我们从来没有完全发现 是什么 在他的特殊情况下导致了迫使他重新创建项目的问题,但升级 CLI 最终解决了这个问题原始问题。

【讨论】:

  • G 是的,我想这也能解决它。但它并没有为我解决。
  • @wuno 您是否仍然遇到所有相同的警告/错误,或者在 CLI 更新后已经清除了一些警告/错误?
  • 好吧,我现在才意识到我的问题是我无法让 ng serve 运行,因为我更新了。我在 Class.run (/Users/wuno/Dropbox/google/devops/node/riverwalk-web-application/node_modules/angular-cli/ tasks/serve.js:22:61) 在 /Users/wuno/Dropbox/google/devops/node/riverwalk-web-application/node_modules/angular-cli/commands/serve.run.js:22:22 在进程。 _tickCallback (internal/process/next_tick.js:103:7)
  • @wuno 如果您还没有看到这个,它可能会有所帮助:github.com/angular/angular-cli/issues/4736 检查前导“。”在 angular-cli.json 的文件名中。它在 CLI 的更高版本中发生了变化。
  • 嘿,我在全球和本地更新了 Angular cli,但无法让项目运行。所以我用 ng new 创建了一个新项目,package.json 文件显示“angular-cli”:“1.0.0-beta.28.3”,所以现在我的项目运行没有错误,“@angular/common” : "^2.3.1", 但我认为当前版本的 angular cli 是 1.0.0 ??你明白我的意思吗?我的计划是使用已经升级的 angular cli 开始升级过程,看看是否有帮助,但是 package.json 中的 angular cli 版本似乎不是最新的。
猜你喜欢
  • 2017-06-04
  • 2018-02-22
  • 2018-06-17
  • 2020-06-06
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多