当我使用jest(ts-jest async / await test)时,WebStorm提示我TS错误(TS2705)

时间:2018-06-07 03:46:51

标签: javascript typescript webstorm jestjs

包裹: 笑话 TS-开玩笑 @类型/开玩笑

IDE: WebStorm

当我使用jest异步测试时,我无法解决TS错误(TS2705)。但是这个提示不会影响jest命令。

image

使用最小的测试时出现相同的错误:

import {} from 'jest';

test('async test',async ()=>{

});

jest.config.js

module.exports =  {
    "transform": {
        "^.+\\.tsx?$": "ts-jest"
    },
    "testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
        "moduleFileExtensions": [
        "ts",
        "tsx",
        "js",
        "jsx",
        "json",
        "node"
    ],
    globals:{
        'ts-jest':{
            // I have the same behavior when I delete this line
            "tsConfigFile": "./tsconfig.json"
        }
    }
};

tsconfig.json

{
  "compilerOptions": {
    "types": [
    "node"
    ],
    "module": "commonjs",
    "target": "es2017",
    "lib": [
      "es2015",
      "es2016",
      "esnext.asynciterable"
  ],
    "noImplicitAny": false,
    "noImplicitThis": false,
    "inlineSourceMap": true,


    "rootDirs": ["."],
    "outDir":"./dist",
    "experimentalDecorators":true,
    "emitDecoratorMetadata": true,
    "moduleResolution": "node",
    "watch":false
  },
  "include":[
    "./app/**/*.ts",
    "./config/**/*.ts",
    "./app.ts",
    "./preload.ts"
  ],
  "exclude": [
    "./dist/**/*.*"
  ]
}

如何解决此IDE错误提示?

2 个答案:

答案 0 :(得分:4)

如果在首选项|中启用了TypeScript服务语言与框架| TypeScript ,它使用最近的tsconfig.json当前文件,扫描文件夹从文件目录到项目根目录。如果找不到包含tsconfig.*.json个文件的当前文件,则默认配置用于文件linting。 请注意" 包括"根目录tsconfig.json中的部分:

"include":[
    "./app/**/*.ts",
    "./config/**/*.ts",
    "./app.ts",
    "./preload.ts"
  ],

"测试"您的规范文件所在的目录未包含在TypeScript项目中。见tsconfig.json documentation

如果"文件"和"包括"如果未指定,编译器默认包含所有包含目录和子目录中的TypeScript(.ts,.d.ts和.tsx)文件,但使用" exclude"排除的文件除外。属性。如果"文件"或"包括"属性是指定的,编译器 将改为包括这两个属性包含的文件的并集。

因此,找不到适合您的规范文件的tsconfig.json文件(您必须在typeScript控制台中看到警告'没有找到root tsconfig.json)。因此,使用了不包含"es2015"库的默认编译器首选项 - 因此出现错误。 在您的根配置中包含测试文件,或在"测试"中添加具有适当设置的单独tsconfig.json目录应解决问题。

答案 1 :(得分:0)

问题已经解决了。

但是不明白这个原则。

enter image description here

我在tests目录中添加了一个tsconfg.json文件并解决了它。