角度:node_modules / @ types / babel _traverse / index.d.ts1137,43:错误TS1109:预期表达式 问与答最终词

问题描述

我目前陷入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

  1. 通过运行命令7.0.6安装旧版本(我使用过npm install @types/[email protected]
    • 注意:您可以将其安装在单独的项目或文件夹中,以便运行完整的npm install不会将其覆盖为最新版本。
  2. 然后进入该临时lib文件夹\node_modules\@types\babel__traverse,只需复制index.d.ts文件
  3. 然后进入损坏的项目并覆盖文件(\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个步骤,您将重新营业。