WebStorm IDEを使用してTypeScript(ES6)でテストを記述しようとしています。例えば。:
_// Imports...
describe('Message', () => {
const server = express();
server.use(bodyParser.json());
const messageService = { findAll: () => ['test'] };
beforeAll(async () => {
const module = await Test.createTestingModule({
modules: [MessageModule],
})...
});
// Tests...
});
_
ただし、WebStorm IDEはasync () =>
で次のエラーを表示します
TS2705:ES5/ES3の非同期関数またはメソッドには、Promiseコンストラクターが必要です。 Promiseコンストラクターの宣言があることを確認するか、-libオプションにES2015を含めてください。
私の_tsconfig.json
_:
_{
"compilerOptions": {
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": true,
"allowJs": true,
"outDir": "./dist"
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
_
ts ES5/ES3の非同期関数またはメソッドには「Promise」コンストラクターが必要です を読み、追加してみました
_"lib": [ "es2015" ]
_
ただし、効果はありません。何が悪いのですか?
追加中
"lib": [ "es2015" ]
totsconfig.jsonは問題を修正する必要があります。ただし、仕様ファイルはtsconfig.jsonに含まれていないようです("include":[]
および"exclude":[]
値を確認してください)。そのため、TypeScriptサービスは、ファイルに異なるtsconfig.jsonを使用する必要があります(ない場合はデフォルトの場合がありますtsconfig.json仕様を含むファイルが見つかりました)問題を解決するには、仕様ファイルの処理に使用されるconfigでlib
プロパティを指定するようにしてください
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"allowSyntheticDefaultImports": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./src",
"lib": ["es2015"]
},
"include": [
"src/**/*",
"**/*.spec.ts"
],
"exclude": [
"node_modules"
]
}
@lenaの答えに従って"lib":["es2015"]
に"compilerOptions"
を追加し、**/*.spec.ts
から"exclude":[]
を削除して"include":[]
に追加して解決しました。