web-dev-qa-db-ja.com

WebStorm、ES5 / ES3の非同期関数またはメソッドには「Promise」コンストラクターが必要です

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" ]
_

ただし、効果はありません。何が悪いのですか?

10
Upvote

追加中

"lib": [ "es2015" ]

totsconfig.jsonは問題を修正する必要があります。ただし、仕様ファイルはtsconfig.jsonに含まれていないようです("include":[]および"exclude":[]値を確認してください)。そのため、TypeScriptサービスは、ファイルに異なるtsconfig.jsonを使用する必要があります(ない場合はデフォルトの場合がありますtsconfig.json仕様を含むファイルが見つかりました)問題を解決するには、仕様ファイルの処理に使用されるconfigでlibプロパティを指定するようにしてください

17
lena

プロジェクトソースを編集しないソリューション

私はIntelliJでこの問題を抱えていましたが、IDE設定を変更することで解決しました:

設定->言語とフレームワーク->TypeScript

次に、「オプション」フィールドに以下を追加します。

--lib es2015

enter image description here

11
Francesco Borzi
{
  "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":[]に追加して解決しました。

0
Manu Nair