안녕하세요 저는 TypeScript 프로젝트에서 async / await를 사용하고 있지만 다음 로그를 얻습니다.
[ts] ES5 / ES3의 비동기 함수 또는 메서드에는 'Promise'생성자가 필요합니다. 'Promise'생성자에 대한 선언이 있는지 확인하거나 --lib옵션 에 'ES2015'를 포함하세요 .
어떻게 해결할 수 있습니까?
안녕하세요 저는 TypeScript 프로젝트에서 async / await를 사용하고 있지만 다음 로그를 얻습니다.
[ts] ES5 / ES3의 비동기 함수 또는 메서드에는 'Promise'생성자가 필요합니다. 'Promise'생성자에 대한 선언이 있는지 확인하거나 --lib옵션 에 'ES2015'를 포함하세요 .
어떻게 해결할 수 있습니까?
답변:
오류 메시지에서 알 수 있듯이 lib: es2015tsconfig.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입니다. 어떻게 편집해야합니까?