【问题标题】:Angular CLI: Cannot read property 'write' of undefinedAngular CLI:无法读取未定义的属性“写入”
【发布时间】:2018-12-20 13:04:14
【问题描述】:

在升级部分 Angular 包(从 4 到 5)后,同事遇到以下问题:

Cannot read property 'write' of undefined
TypeError: Cannot read property 'write' of undefined
   at UI.write (C:\Workspace\MyAngularApp\MyAngularApp.Web\node_modules\@angular\cli\ember-cli\lib\ui\index.js:56:23)
   at UI.writeLine (C:\Workspace\MyAngularApp\MyAngularApp.Web\node_modules\@angular\cli\ember-cli\lib\ui\index.js:69:8)
   at Class.run (C:\Workspace\MyAngularApp\MyAngularApp.Web\node_modules\@angular\cli\tasks\serve.js:237:12)
   at check_port_1.checkPort.then.port (C:\Workspace\MyAngularApp\MyAngularApp.Web\node_modules\@angular\cli\commands\serve.js:123:26)
   at <anonymous>
   at process._tickCallback (internal/process/next_tick.js:188:7)

这个问题无法理解,因为我没有这个问题,并且在 VSTS 中构建也成功:(

这是 package.json(从 4.3.6 升级后):

    "dependencies": {
        "@angular-devkit/core": "0.6.8",
        "@angular/animations": "5.2.9",
        "@angular/common": "5.2.9",
        "@angular/compiler": "5.2.9",
        "@angular/core": "5.2.9",
        "@angular/forms": "5.2.9",
        "@angular/http": "5.2.9",
        "@angular/platform-browser": "5.2.9",
        "@angular/platform-browser-dynamic": "5.2.9",
        "@angular/router": "5.2.9",
        "@ngx-translate/core": "8.0.0",
        "@ngx-translate/http-loader": "1.0.2",
        "angular-azure-blob-service": "1.0.0",
        "angular-sortablejs": "2.0.6",
        "angular2-fontawesome": "5.2.1",
        "angular2-multiselect-dropdown": "2.4.0",
        "bootstrap": "4.1.1",
        "copy-webpack-plugin": "4.3.1",
        "core-js": "2.5.0",
        "font-awesome": "4.7.0",
        "jquery": "^3.3.1",
        "lightbox2": "2.10.0",
        "lodash": "4.17.4",
        "moment": "2.20.1",
        "ng2-completer": "1.6.1",
        "ng5-breadcrumb": "0.0.6",
        "ngx-bootstrap": "^3.0.1",
        "ngx-chips": "^1.9.2",
        "popper.js": "^1.14.3",
        "rxjs": "5.5.8",
        "sortablejs": "1.6.0",
        "tether": "^1.4.4",
        "zone.js": "0.8.23"
      },
      "devDependencies": {
        "@angular/cli": "1.7.4",
        "@angular/compiler-cli": "^5.2.9",
        "@types/jasmine": "2.5.54",
    "@types/node": "8.0.25",
    "codelyzer": "4.0.2",
    "jasmine-core": "2.8.0",
    "jasmine-spec-reporter": "4.2.1",
    "karma": "1.7.0",
    "karma-chrome-launcher": "2.2.0",
    "karma-cli": "1.0.1",
    "karma-coverage-istanbul-reporter": "1.3.0",
    "karma-jasmine": "1.1.0",
    "karma-jasmine-html-reporter": "0.2.2",
    "protractor": "5.1.2",
    "ts-node": "3.3.0",
    "tslint": "5.8.0",
    "typescript": "~2.8.1"
  }

我的同事在尝试安装与我相同的版本(1.7.4)之前安装了 @angular/cli 6.0.x 的 alpha 版本,也许这是一个线索?

环境: @角/cli:1.7.4 节点:8.9.4 npm:6.1.0

【问题讨论】:

  • 只需删除 node_modules 文件夹和 package-lock.json 文件,然后再次执行npm i。另外,也许升级到 v6 而不是 v5 更好?
  • @PierreDuc 我将添加update.angular.io,因为如果您不知道如何正确更新,很容易破坏 Angular 项目。

标签: angular


【解决方案1】:

发现:D

我们必须全局卸载@angular/cli,然后重新安装:P

使用的命令:

  • npm 卸载 -g @angular/cli
  • npm 安装 npm
  • 删除 package-lock.json(来源:@PierreDuc)
  • npm 安装
  • npm install -g @angular/cli
  • ng 服务

享受:)

为什么不直接将 Angular 转为 6?因为有一些与 RxJS 相关的重大更改,但是是的,我们期待将其更新到 Angular6。

是的,你是对的@Ploppy ;)(使用 update.angular.io)

【讨论】:

  • 像魅力一样工作:)
【解决方案2】:

我与 moueidat 处于同一位置,并设法使用 node-modules 文件夹中的 angular-cli 二进制文件使其工作:

node.exe .\node_modules\@angular\cli\bin\ng serve

【讨论】:

    【解决方案3】:

    我认为这与最新的 @angular/cli 版本有关。检查您的全球版本是否与您的同事不同。

    我有同样的问题,但这是因为我有一个 6.1.1 的全局角度版本,当我恢复到 6.0.0 时它很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-28
      • 2020-01-13
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 2021-12-21
      相关资源
      最近更新 更多