ts ES5 / ES3의 비동기 함수 또는 메서드에는 'Promise'생성자가 필요합니다.
안녕하세요 저는 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
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;
}
Angular 4 프로젝트에서 VS2017 v15.8.2 및 Typescript 2.4.2를 사용하고 있습니다 (타입 스크립트 프로젝트가 아닌 내 솔루션의 클래스 라이브러리 프로젝트 아래). JavaScript 언어 서비스를 비활성화하여 VS에서 오류 / 경고를 제거 할 수있었습니다 .
옵션 => 텍스트 편집기 => JavaScript / TypeScript => 언어 서비스
VS를 다시 시작하십시오.
도움이 되었기를 바랍니다.
'developer tip' 카테고리의 다른 글
Docker에 최소 플라스크 앱 배포-서버 연결 문제 (0) | 2020.10.12 |
---|---|
JsonReader.setLenient (true)를 사용하여 1 행 1 열 경로 $에서 잘못된 형식의 JSON을 허용하십시오. (0) | 2020.10.12 |
print 문을 사용할 때 특수 문자 표시 (0) | 2020.10.12 |
MSYS에서 폴더 찾아보기 (0) | 2020.10.12 |
std :: shared_ptr of this (0) | 2020.10.12 |