问题描述
我目前陷入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.
我尝试了以下选项来解决此问题,但未成功:
选项1 -删除并安装node_modules, 选项2 -删除并安装@ types / babel_traverse
谁能让我知道可能是什么原因。这是我本地安装的角度/相关性版本:
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
请注意,由于我的项目已经在生产中,因此我目前无法更新任何内容。
非常感谢。
解决方法
尝试将Typescript更新为新版本。为我工作。
“打字稿”-“ ^ 3.4.2”
,为避免由于依赖关系更新而导致的此类错误,并且如果您正在生产中,请提交package-lock.json或yarn.lock文件。
,我遇到了同样的问题,我找到了一种绕过该问题的方法,但是我必须警告,这是一个补丁而非修复。解决此问题的方法很简单,只需按照以下步骤下载/安装旧版本的@types/babel__traverse
- 通过运行命令
7.0.6
安装旧版本(我使用过npm install @types/[email protected]
)- 注意:您可以将其安装在单独的项目或文件夹中,以便运行完整的
npm install
不会将其覆盖为最新版本。
- 注意:您可以将其安装在单独的项目或文件夹中,以便运行完整的
- 然后进入该临时lib文件夹
\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小组I很高兴(原文如此)报告您通过明确地始终使用您的最新版本破坏了我的代码,做得很好!!! ...这是证据,取自我的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" "*"
看看*
↑
最终词
最后,实际修复是将TypeScript更新为比3.5.x
更高的版本,但是,如果不能(像我一样),那么请遵循我编写的3个步骤,您将重新营业。