@babel/types Angular 8.2.14 中 ng build 命令的构建错误
@babel/types build errors on ng build command in Angular 8.2.14
当我为我的 Angular 应用程序 运行 命令“ng build
”时出现以下错误。
ERROR in ../node_modules/@types/babel-types/index.d.ts:1769:96 - error TS1144: '{' or ';' expected.
1769 export function assertArrayExpression(node: object | null | undefined, opts?: object): asserts node is ArrayExpression;
~~~~
../node_modules/@types/babel-types/index.d.ts:1769:101 - error TS1005: ';' expected.
1769 export function assertArrayExpression(node: object | null | undefined, opts?: object): asserts node is ArrayExpression;
~~
../node_modules/@types/babel-types/index.d.ts:1769:104 - error TS1005: ';' expected.
1769 export function assertArrayExpression(node: object | null | undefined, opts?: object): asserts node is ArrayExpression;
~~~~~~~~~~~~~~~
../node_modules/@types/babel-types/index.d.ts:1770:101 - error TS1144: '{' or ';' expected.
1770 export function assertAssignmentExpression(node: object | null | undefined, opts?: object): asserts node is AssignmentExpression;
~~~~
../node_modules/@types/babel-types/index.d.ts:1770:106 - error TS1005: ';' expected.
1770 export function assertAssignmentExpression(node: object | null | undefined, opts?: object): asserts node is AssignmentExpression;
这是我的 Angular 和 Node js 版本信息:
Angular CLI: 8.3.29
Node: 16.13.1
OS: win32 x64
Angular: 8.2.14
npm 8.1.2
之前,我使用的是 Node 12 并且构建成功。升级到 Node 16 后,我遇到了上述问题。
"devDependencies": {
"@angular-devkit/build-angular": "~0.803.25",
"@angular/cli": "~8.3.25",
"@angular/compiler-cli": "~8.2.14",
"@angular/language-service": "~8.2.14",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "12.7.3",
"apply-loader": "^2.0.0",
"codelyzer": "^5.0.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "^4.1.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",
"pug": "^2.0.3",
"pug-loader": "^2.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.5.3"
}
我需要升级任何软件包版本吗?或者是否存在与 Node 16
的兼容性问题
问题是 angular v8 有数百个依赖项,其中很少有与节点 v16(或包-lock.json v2)不兼容。如果你需要升级节点,你最好也升级 angular.
best/easiest 是在逐步升级节点的同时调整依赖项的升级速度。安装node 14,升级依赖,然后安装v16再做一次
我还建议您将 npm 降级到 v7,因为 v8+ 会将您的软件包-lock.json 升级到 v2。在进行升级时,这会使事情复杂化。
升级依赖项后,您始终可以将 npm 升级到最新版本,然后将 package-lock 升级到 v2。
前几天我回答过类似的问题,也许对你也有帮助:
当我为我的 Angular 应用程序 运行 命令“ng build
”时出现以下错误。
ERROR in ../node_modules/@types/babel-types/index.d.ts:1769:96 - error TS1144: '{' or ';' expected.
1769 export function assertArrayExpression(node: object | null | undefined, opts?: object): asserts node is ArrayExpression;
~~~~
../node_modules/@types/babel-types/index.d.ts:1769:101 - error TS1005: ';' expected.
1769 export function assertArrayExpression(node: object | null | undefined, opts?: object): asserts node is ArrayExpression;
~~
../node_modules/@types/babel-types/index.d.ts:1769:104 - error TS1005: ';' expected.
1769 export function assertArrayExpression(node: object | null | undefined, opts?: object): asserts node is ArrayExpression;
~~~~~~~~~~~~~~~
../node_modules/@types/babel-types/index.d.ts:1770:101 - error TS1144: '{' or ';' expected.
1770 export function assertAssignmentExpression(node: object | null | undefined, opts?: object): asserts node is AssignmentExpression;
~~~~
../node_modules/@types/babel-types/index.d.ts:1770:106 - error TS1005: ';' expected.
1770 export function assertAssignmentExpression(node: object | null | undefined, opts?: object): asserts node is AssignmentExpression;
这是我的 Angular 和 Node js 版本信息:
Angular CLI: 8.3.29
Node: 16.13.1
OS: win32 x64
Angular: 8.2.14
npm 8.1.2
之前,我使用的是 Node 12 并且构建成功。升级到 Node 16 后,我遇到了上述问题。
"devDependencies": {
"@angular-devkit/build-angular": "~0.803.25",
"@angular/cli": "~8.3.25",
"@angular/compiler-cli": "~8.2.14",
"@angular/language-service": "~8.2.14",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "12.7.3",
"apply-loader": "^2.0.0",
"codelyzer": "^5.0.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "^4.1.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",
"pug": "^2.0.3",
"pug-loader": "^2.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.5.3"
}
我需要升级任何软件包版本吗?或者是否存在与 Node 16
的兼容性问题问题是 angular v8 有数百个依赖项,其中很少有与节点 v16(或包-lock.json v2)不兼容。如果你需要升级节点,你最好也升级 angular.
best/easiest 是在逐步升级节点的同时调整依赖项的升级速度。安装node 14,升级依赖,然后安装v16再做一次
我还建议您将 npm 降级到 v7,因为 v8+ 会将您的软件包-lock.json 升级到 v2。在进行升级时,这会使事情复杂化。 升级依赖项后,您始终可以将 npm 升级到最新版本,然后将 package-lock 升级到 v2。
前几天我回答过类似的问题,也许对你也有帮助: