错误:TSError:⨯ 无法编译 TypeScript

Posted

技术标签:

【中文标题】错误:TSError:⨯ 无法编译 TypeScript【英文标题】:Error: TSError: ⨯ Unable to compile TypeScript 【发布时间】:2017-12-11 09:57:50 【问题描述】:

我面临的问题:

我的项目是基于 Angular4 构建的,带有 typescript,使用量角器和 karma 进行 e2e 测试。

Travis-ci 有这个错误:

[03:34:54] E/launcher - Error: TSError: ⨯ Unable to compile TypeScript
Cannot find type definition file for 'jasmine'. (2688)
Cannot find type definition file for 'node'. (2688)
e2e/app.e2e-spec.ts (1,32): Cannot find module './app.po'. (2307)
e2e/app.e2e-spec.ts (4,1): Cannot find name 'describe'. (2304)
e2e/app.e2e-spec.ts (7,3): Cannot find name 'beforeEach'. (2304)
e2e/app.e2e-spec.ts (11,3): Cannot find name 'it'. (2304)
e2e/app.e2e-spec.ts (13,5): Cannot find name 'expect'. (2304)

The command "ng e2e" exited with 4.

我的 tsconfig.json:


  "compileOnSave": false,
  "compilerOptions": 
    "outDir": "./dist/out-tsc",
    "baseUrl": ".",
    "paths": 
      "*": ["./node_modules/*", "*"]
    ,
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "types": [ "node", "jasmine" ],
    "typeRoots": [
      "./node_modules/@types"
    ],
    "lib": [
      "es2016",
      "dom"
    ]
  

我的 tsconfig.spec.json:


  "compilerOptions": 
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [
      "es2016",
      "dom"
    ],
    "outDir": "../out-tsc/spec",
    "module": "commonjs",
    "target": "es5",
    "baseUrl": "",
    "types": [
      "jasmine",
      "node"
    ],
    "typeRoots": [
      "../node_modules/@types"
    ]
  ,
  "files": [
    "test.ts"
  ],
  "include": [
    "**/*.spec.ts"
  ]

节点 v6.10.3

npm v3.10.10

请帮帮我。

【问题讨论】:

您可以参考给定的解决方法here。不确定这些是否相同。干杯! 我更新了我的 devDependencies 并修复了这个错误! 【参考方案1】:

我遇到了同样的问题。首先我从package.json 中删除ts-nodetypescript。那么,

npm install ts-node --save-dev
npm install typescript -g 
npm install typescript --save-dev

【讨论】:

只需使用 npm i ts-node@latest 更新 ts-node 即可为我工作。谢谢。【参考方案2】:

我也遇到了同样的问题,发现错误已附加

解决方法:勾选tsconfig.json并设置"allowJs": false

【讨论】:

【参考方案3】:

如果只有npm install -g typescript 不起作用。

尝试在项目文件夹中做tsc

【讨论】:

这是怎么回事?这是解决方案吗? 我在多个 Angular 项目中工作,其中一些使用旧的 typescript 3.3,所以为了使 typescript 工作我们需要运行“tsc”【参考方案4】:

对我来说,解决方案是将tsconfig.json 文件中的"jsx": "react-jsx" 更改为"jsx": "react"

【讨论】:

我完全丢失了 tsconfig.json 文件,添加后问题就解决了【参考方案5】:

这是我对这个问题的解决方案:- 运行此命令

npm install -save-dev typescript@2.3.4

npm WARN code_gui@0.0.1 No repository field.
npm WARN code_gui@0.0.1 No license field.

+ typescript@2.3.4
updated 1 package and audited 657 packages in 2.539s
found 0 vulnerabilities

【讨论】:

【参考方案6】:

当我更新我的打字稿版本时,我来到这里寻找类似错误的解决方案,我的不是一个新项目,我正在运行一个带有 "@angular/cli": "1.2.0" 的 angular2 项目。我将我的打字稿版本从2.0.3 更新为2.7.2,然后在运行ng e2e 时遇到了类似下面的问题。

错误:TSError:⨯ 无法编译 TypeScript
找不到“core-js”的类型定义文件。 (2688)
找不到“grecaptcha”的类型定义文件。 (2688)
找不到“茉莉花”的类型定义文件。 (2688)
找不到“时刻时区”的类型定义文件。 (2688)
找不到“节点”的类型定义文件。 (2688)
找不到“q”的类型定义文件。 (2688)

这篇文章中提出的解决方案对我不起作用。

我通过将ts-node 更新为5.0.1 来修复它。即使我在tsconfig.json 中将experimentalDecorators 设置为true,但在运行ng e2e 时,高于此版本的版本会出现如下错误:

错误 TS1219:对装饰器的实验性支持是一项可能会在未来版本中更改的功能。设置“experimentalDecorators”选项以删除此警告

除了上面的改动,我还改了protractor.conf.js中的几行

改变:

beforeLaunch: function () 
    require('ts-node').register(
        project: 'e2e'
    );
,

beforeLaunch: function () 
   require('ts-node/register')

这适用于那些可能偶然发现这篇文章并且建议的解决方案对他们不起作用的人。

【讨论】:

在我的情况下,问题在于 spec.ts 文件之一中缺少右花括号。 更新 ts-node 并更改 beforeLaunch 方法对我有用。我正在研究角度 10

以上是关于错误:TSError:⨯ 无法编译 TypeScript的主要内容,如果未能解决你的问题,请参考以下文章

角度 TS 错误 TS1109

如何修复错误“找不到此相关模块:* ./src/main.js in multi (webpack)-dev-server”在 npm run serve in vue3.x with typescr

ng generate store AppState --root --module app.module.ts 错误

进阶学习13:TypeScript——安装使用特性详解

尝试执行“npx typescript --init”“npm ERR!无法确定要运行的可执行文件”

TS错误:“找不到名称'T'如何通过泛型?