こんにちは、TypeScriptプロジェクトでasync / awaitを使用していますが、次のログを取得しています。
[ts] ES5 / ES3の非同期関数またはメソッドには、「Promise」コンストラクターが必要です。'Promise'コンストラクターの宣言があることを確認するか、--lib
オプションに 'ES2015'を含めてください。
どうすれば解決できますか?
こんにちは、TypeScriptプロジェクトでasync / awaitを使用していますが、次のログを取得しています。
[ts] ES5 / ES3の非同期関数またはメソッドには、「Promise」コンストラクターが必要です。'Promise'コンストラクターの宣言があることを確認するか、--lib
オプションに 'ES2015'を含めてください。
どうすれば解決できますか?
回答:
エラーメッセージが示すようlib: es2015
に、tsconfig.json に追加します。
// tsconfig.json
{
"compilerOptions": {
"lib": [ "es2015" ]
}
}
更新:これがうまくいかない場合は、これを試してください:
WebStormなどのJetBrains IDEは、デフォルトで独自の実装を使用します。代わりにTypeScript言語サービスを使用するように構成してください。
Visual Studioの場合、プロジェクトファイルとtsconfig.json
は相互に排他的です。プロジェクトを直接構成する必要があります。
https://github.com/Microsoft/TypeScript/issues/3983#issuecomment-123861491
csproj
ようなことを有効/無効にするためにファイルにいくつかの追加のxml要素があることがわかりました。
"dom"
ました"lib"
。そうしないと、他のエラーが発生します。
es6-promiseの型定義を含むこのパッケージを試してください
npm install --save @types/es6-promise
あなたはVS上にある場合、tsconfig.jsonを削除して、右ソリューションエクスプローラでプロジェクトをクリックし、をクリックして全般における活字体ビルドが>プロパティ-以下を変更
ECMAScriptバージョン:ECMAScript 6
モジュールシステム:ES2015
特定のエラーには「lib」:「es2015.promise」を使用することもできます
VS2019はtsconfig.jsonファイルを認識していないようなので、LIBオプションはアプリケーションを変更しません。これは、typesyncがASYNC AWAITを受け入れるようにPROMISEを追加する方法です。
export function AD(first: any, second: any, callBack: any)
{
const rtn = async (dispatch: any): Promise<void> =>
{
await axios.post(TYPE.URI, { // provide a string of a URI to post into
parm1: first,
parm2: second
})
.then(data => // or you can use response instead of data as a name
{
console.log("data from call next");
console.log(data);
dispatch({ type: TYPES.AD, payload: data.data });
if (callBack)
{
callBack(data);
}
})
}
return rtn;
}
私にとってエラーは、src/tests
フォルダー内のテストファイルで発生しました。ファイルを直接ts-node
テストするために使用しているので.ts
、私はで除外しsrc/tests/*
ましたtsconfig.json
。行を削除するとすぐにエラーはなくなりました(これは最終的には意味があります)。
他の誰かが彼のテストファイルでこれに苦労している場合に備えて。
編集:もちろん--lib
、受け入れられた回答で概説されているように、オプションを正しく構成する必要があります。私のtsconfig.json --lib
オプションは次のように機能します:
"lib": [
"es2018",
"dom"
]
ようやく解決しました!
端末での私のコマンド:
yarn tsc main.ts && nodejs main.js
私のエラーメッセージ:
main.ts:1:16 - error TS2705: An async function or method in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your `--lib` option.
1 async function main() {
~~~~
Found 2 errors.
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
私がそれを解決するためにしたことは、tsconfig.jsonファイルを参照することでした。
私のtsconfig.jsonファイルは次のとおりです:
{
"compilerOptions": {
"target": "ESNext",
"lib": [
"ES2015",
"DOM"
]
}
}
そして、私のターミナルコマンドは次のようyarn tsc -p ./tsconfig.json && nodejs main.js
になります。他の.tsファイルを実行したい場合は、次のように
します。
yarn tsc -p ./tsconfig.json && nodejs file_name.js
{ "compilerOptions": { "module": "commonjs", "target": "es5", "noImplicitAny": false, "sourceMap": false } }
これは私のtsconfig.jsonです。