【问题标题】:Problem with Angular dependencies: @types/node: '{' or ';' expectedAngular 依赖问题:@types/node: '{' or ';'预期的
【发布时间】:2021-07-21 17:18:56
【问题描述】:

在我的应用程序中执行“ng serve”时出现错误,它是一个 Angular 5 应用程序(第一阶段是 Angular 2),现在我已经将它升级到 Angular 8(还尝试了 Angular 6 和 7前)。 但是从Angular 5升级后,我在执行“ng serve”时开始出错,错误通常指向@types/node,比如:

../node_modules/@types/node/assert.d.ts:8:68 中的错误 - 错误 TS1144:'{' 或 ';'预计。

或:

node_modules/@types/node/assert.d.ts:56:14 - 错误 TS2300:重复标识符“断言”。

我尝试升级不同的包(在几个 Github 帖子中找到了一些关于升级某些 @types 或 Typescript 版本的建议),使用不同版本的 Angular/Typescript,更新节点(现在版本 14.16.1),即使从 DevDependencies 中删除 @types,到目前为止也没有任何效果。
也许我有一些已弃用的包/功能甚至代码在使用 Angular 版本 >5 时会影响整个应用程序。
这是我的 package.json(没有 @types):

"dependencies": {
  "@angular/animations": "8.2.14",
  "@angular/common": "8.2.14",
  "@angular/compiler": "8.2.14",
  "@angular/compiler-cli": "8.2.14",
  "@angular/core": "8.2.14",
  "@angular/forms": "8.2.14",
  "@angular/platform-browser": "8.2.14",
  "@angular/platform-browser-dynamic": "8.2.14",
  "@angular/platform-server": "8.2.14",
  "@angular/router": "8.2.14",
  "@angular/upgrade": "8.2.14",
  "angular2-notifications": "2.0.0",
  "bootstrap": "3.3.7",
  "bootstrap-datepicker": "1.6.4",
  "bootstrap-select": "1.13.18",
  "brace": "0.11.1",
  "core-js": "3.0.1",
  "font-awesome": "4.7.0",
  "jquery": "3.4.1",
  "lodash": "4.17.21",
  "ng2-file-upload": "1.4.0",
  "ng2-table": "1.3.2",
  "reflect-metadata": "0.1.8",
  "rxjs": "6.6.7",
  "rxjs-compat": "6.0.0-rc.0",
  "zone.js": "~0.9.1"

},
"devDependencies": {
  "@angular-devkit/build-angular": "0.803.29",
  "@angular/cli": "8.3.29",
  "@angular/language-service": "8.2.14",
  "angular2-template-loader": "0.6.2",
  "bestzip": "1.1.4",
  "codelyzer": "5.0.1",
  "copy-webpack-plugin": "3.0.1",
  "css-loader": "0.28.0",
  "extract-text-webpack-plugin": "1.0.1",
  "file-loader": "0.11.1",
  "html-loader": "0.4.5",
  "html-webpack-plugin": "2.28.0",
  "jasmine-core": "3.4.0",
  "jasmine-spec-reporter": "4.2.1",
  "karma": "4.1.0",
  "karma-chrome-launcher": "2.2.0",
  "karma-coverage-istanbul-reporter": "1.2.1",
  "karma-jasmine": "1.1.0",
  "karma-jasmine-html-reporter": "0.2.2",
  "null-loader": "0.1.1",
  "protractor": "5.4.2",
  "raw-loader": "3.1.0",
  "rimraf": "2.7.1",
  "style-loader": "0.23.1",
  "to-string-loader": "1.1.6",
  "ts-loader": "5.4.5",
  "ts-node": "8.3.0",
  "tslint": "5.20.0",
  "tslint-loader": "3.5.4",
  "typescript": "3.4.5",
  "url": "0.11.0",
  "url-loader": "1.1.2"
}

希望之前有人遇到过类似的情况,并且能够帮助我解决这个问题,我已经看到几个帖子中存在类似问题但没有明确的解决方案,所以这可能对更多人有所帮助,

谢谢!

【问题讨论】:

  • 删除node_modules 文件夹,然后重新运行npm install(或yarn,或任何你的包管理器的安装命令)。因为您的直接依赖项中甚至没有@types/node。如果这没有帮助,请运行 npm list 以查看依赖关系树,以及哪个包正在拉入 @types/node
  • 嘿@c69,我已经尝试删除node_modules 并再次运行npm install 几次,同时测试不同的包/版本。 @types 没有显示在那里的原因是因为我手动删除了它们以进行测试,“npm install”不再将它们放在那里。我现在检查了你提到的关于 npm list 的内容,我发现 ng2-table 和另外几个不推荐使用的模块有一些错误(我很担心,也许这些错误的原因基本上是我正在使用一些已弃用的模块。我会继续调查。
  • 在查看并修复了 npm list 中显示的依赖项问题后,我发现只有 1 个引用 @types/node+-- html-webpack-plugin@4.5.0 | +-- @types/html-minifier-terser@5.1.1 | +-- @types/tapable@1.0.7 | +-- @types/webpack@4.41.28 | | +-- @types/anymatch@1.3.1 | | +-- @types/node@15.0.2 deduped 我也尝试过直接安装该版本:` "@types/node": "15.0.2",` 结果相同。 ERROR in ../node_modules/@types/node/assert.d.ts:3:68 - error TS1144: '{' or ';' expected.
  • 我当然很容易提出这个建议.. 但是您可以尝试删除或升级该模块吗?也许插件中存在错误 - 当前版本要新得多 5.3.1 npmjs.com/package/html-webpack-plugin

标签: node.js angular typescript dependencies


【解决方案1】:

最后我得到了修复,我只是弄乱了 package.json 并测试了一些新的依赖项,现在它可以工作了,@types 错误消失了(我还尝试了所有 @types 的不同版本,以及这些对我来说是好的),这是最终的 package.json:

    "@angular/animations": "~7.2.0",
    "@angular/common": "~7.2.0",
    "@angular/compiler": "~7.2.0",
    "@angular/core": "~7.2.0",
    "@angular/forms": "~7.2.0",
    "@angular/platform-browser": "~7.2.0",
    "@angular/platform-browser-dynamic": "~7.2.0",
    "@angular/router": "~7.2.0",
    "angular2-notifications": "^9.0.0",
    "bootstrap": "3.3.7",
    "bootstrap-datepicker": "1.6.4",
    "bootstrap-select": "1.11.2",
    "core-js": "^2.5.4",
    "jquery": "^3.6.0",
    "ng2-file-upload": "1.1.4-2",
    "ng2-table": "^1.3.2", 
    "popper.js": "^1.16.1",
    "rxjs": "~6.3.3",
    "tslib": "^1.9.0",
    "zone.js": "~0.8.26"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.13.0",
    "@angular/cli": "~7.3.10",
    "@angular/compiler-cli": "~7.2.0",
    "@angular/language-service": "~7.2.0",
    "@types/ace": "0.0.35",
    "@types/bootstrap": "3.3.33",
    "@types/bootstrap-datepicker": "0.0.6",
    "@types/bootstrap-select": "1.11.0",
    "@types/core-js": "^2.5.4",
    "@types/jasmine": "~2.8.8",
    "@types/jasminewd2": "~2.0.3",
    "@types/jquery": "^3.5.5",
    "@types/lodash": "^4.14.168",
    "@types/node": "~8.9.4",
    "codelyzer": "~4.5.0",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.0.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~1.1.2",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.11.0",
    "typescript": "~3.2.2"

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 1970-01-01
    • 2021-05-08
    • 2019-04-02
    • 1970-01-01
    • 2016-08-13
    • 2020-06-21
    • 2020-01-13
    • 2021-05-22
    相关资源
    最近更新 更多