developer tip

ts ES5 / ES3의 비동기 함수 또는 메서드에는 'Promise'생성자가 필요합니다.

optionbox 2020. 10. 12. 07:28
반응형

ts ES5 / ES3의 비동기 함수 또는 메서드에는 'Promise'생성자가 필요합니다.


안녕하세요 저는 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


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를 다시 시작하십시오.

도움이 되었기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/43555378/ts-an-async-function-or-method-in-es5-es3-requires-the-promise-constructor

반응형