【发布时间】: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.1npmjs.com/package/html-webpack-plugin
标签: node.js angular typescript dependencies