안녕하세요 저는 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을 삭제하고 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭 한 다음 일반 에서 속성-> TypeScript 빌드 를 클릭 하여 다음을 변경합니다.
ECMAScript 버전 : ECMAScript 6
모듈 시스템 : ES2015
특정 오류에 대해 "lib": "es2015.promise"를 사용할 수도 있습니다.
VS2019는 tsconfig.json 파일을 인식하지 못하는 것 같으므로 LIB 옵션은 응용 프로그램을 변경하지 않습니다. 이것은 ASYNC AWAIT를 받아들이도록 typescript에 대한 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입니다. 어떻게 편집해야합니까?