我目前在 Angular 中遇到了非常奇怪的问题。一周前我在我的一个分支上工作,它很好并且构建正确。但我不知道它是如何在下面的“ng build”期间开始抱怨的,这是我今天不断遇到的错误:
node_modules/@types/babel__traverse/index.d.ts(1136,44): error TS1109: Expression expected.
node_modules/@types/babel__traverse/index.d.ts(1137,21): error TS1109: Expression expected.
node_modules/@types/babel__traverse/index.d.ts(1137,37): error TS1005: ';' expected.
node_modules/@types/babel__traverse/index.d.ts(1137,43): error TS1109: Expression expected.
node_modules/@types/babel__traverse/index.d.ts(1139,1): error TS1128: Declaration or statement expected.
Run Code Online (Sandbox Code Playgroud)
我尝试了以下选项来解决此问题,但没有取得任何成功:
选项 1 - 删除和安装 node_modules, 选项 2 - 删除和安装 @types/babel_traverse
任何人都可以让我知道可能是什么原因。这是我的本地 angular/dependancy 安装版本:
Angular CLI: 7.3.10
Node: 8.15.0
OS: win32 x64
Angular: 7.2.15
... animations, common, compiler, compiler-cli, core, elements
... forms, http, language-service, platform-browser
... platform-browser-dynamic, router, service-worker
Package Version
------------------------------------------------------------
@angular-devkit/architect 0.13.10
@angular-devkit/build-angular 0.13.9
@angular-devkit/build-ng-packagr 0.13.9
@angular-devkit/build-optimizer 0.13.9
@angular-devkit/build-webpack 0.13.9
@angular-devkit/core 7.3.10
@angular-devkit/schematics 7.3.10
@angular/cdk 7.3.7
@angular/cli 7.3.10
@angular/material 7.3.7
@angular/material-moment-adapter 7.3.7
@ngtools/json-schema 1.1.0
@ngtools/webpack 7.3.9
@schematics/angular 7.3.10
@schematics/update 0.13.10
ng-packagr 4.7.1
rxjs 6.3.3
typescript 3.2.1
webpack 4.29.0
Run Code Online (Sandbox Code Playgroud)
请注意,此时我无法更新任何内容,因为我的项目已经在生产中。
提前谢谢了。
你可以加
"resolutions": {
"@types/babel__traverse": "7.0.6"
}
Run Code Online (Sandbox Code Playgroud)
给你package.json去强制"@types/babel__traverse": "*"去决心"@types/babel__traverse": "7.0.6"。
方法论:
因为@types/babel__core依赖项列表包含@types/babel__traverse版本设置为“ ”(又名最新)的版本,即使您为in*指定版本,也会在其自己的依赖项链中安装最新版本。@types/babel__traversepackage.json@types/babel__core@types/babel__traverse
通过使用resolutions我们可以对依赖项的依赖项指定严格的限制。
@types/babel__traverse和的不同版本@types/babel__core都标有它们支持的 TypeScript 版本。
分别访问https://www.npmjs.com/package/@types/babel__traverse?activeTab=versions和https://www.npmjs.com/package/@types/babel__core?activeTab=versions并查看tsX.Y接下来列出的标签每个版本,它支持哪个 TypeScript 版本。
您需要手动查找这些(我不知道如何自动执行此操作,尽管感觉应该有一种方法),然后手动配置兼容版本package.json,例如
"typescript": "^3.9.10",
"@types/babel__core": "7.1.19",
"@types/babel__traverse": "7.17.1",
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,我找到了一种绕过问题的方法,但我必须警告,这是一个补丁而不是修复。解决这个问题的方法很简单,只需@types/babel__traverse按照以下步骤下载/安装旧版本
7.0.6通过运行命令安装旧版本(我使用过)npm install @types/babel__traverse@7.0.6
npm install不会再次将其覆盖到最新版本。\node_modules\@types\babel__traverse并简单地复制index.d.ts文件\node_modules\@types\babel__traverse\index.d.ts)瞧它有效!!!
[Q] 那我们为什么要这样做呢?
[A] 很简单,index.d.ts旧的 TypeScript 生成的文件3.5.x与新的 TypeScript相比有很大不同(其结构不同)> 3.5.x
[Q] 好的,但为什么我不能添加@types/babel__traverse到我的package.json并完成它?
[A] 因为 Babel 团队决定使用"@types/babel__traverse": "*"并且那个小*手段总是下载最新版本......换句话说,谢谢你 Babel 团队我不太高兴(原文如此)报告你总是明确地破坏我的代码使用您的最新版本 :( ...这是证据,取自我的yarn.lock文件
"@types/babel__core@^7.1.0":
version "7.1.10"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.10.tgz#ca58fc195dd9734e77e57c6f2df565623636ab40"
integrity sha512-x8OM8XzITIMyiwl5Vmo2B1cR1S1Ipkyv4mdlbJjMa1lmuKvKY9FrBbEANIaMlnWn5Rf7uO+rC/VgYabNkE17Hw==
dependencies:
"@babel/parser" "^7.1.0"
"@babel/types" "^7.0.0"
"@types/babel__generator" "*"
"@types/babel__template" "*"
"@types/babel__traverse" "*"
Run Code Online (Sandbox Code Playgroud)
看看最后一行*?
总之,真正的解决方法是将您的 TypeScript 更新到比3.5.x但如果您不能(像我一样)更新的版本,那么请按照我写的 3 个步骤进行操作,您将重新开始工作。
| 归档时间: |
|
| 查看次数: |
4104 次 |
| 最近记录: |