ts Một hàm hoặc phương thức không đồng bộ trong ES5 / ES3 yêu cầu hàm tạo 'Promise'


99

Xin chào, Tôi đang sử dụng async / await trong Dự án TypeScript của mình, Nhưng tôi nhận được nhật ký này:

[ts] Hàm hoặc phương thức không đồng bộ trong ES5 / ES3 yêu cầu hàm tạo 'Promise'. Đảm bảo rằng bạn có khai báo cho hàm tạo 'Promise' hoặc bao gồm 'ES2015' trong --libtùy chọn của bạn .

Làm thế nào tôi có thể giải quyết điều đó?

Câu trả lời:


146

Như thông báo lỗi cho biết, hãy thêm lib: es2015vào tsconfig.json của bạn

// tsconfig.json
{
  "compilerOptions": {
    "lib": [ "es2015" ]
  }
}

CẬP NHẬT: nếu điều này không hiệu quả với bạn, hãy thử cách này:

JetBrains IDE chẳng hạn như WebStorm, sử dụng triển khai riêng của nó theo mặc định. Đảm bảo rằng bạn định cấu hình nó để sử dụng dịch vụ ngôn ngữ TypeScript thay thế.

Đối với Visual Studio, các tệp dự án và tsconfig.jsonloại trừ lẫn nhau. Bạn sẽ cần phải cấu hình trực tiếp dự án của mình.

https://github.com/Microsoft/TypeScript/issues/3983#issuecomment-123861491


{ "compilerOptions": { "module": "commonjs", "target": "es5", "noImplicitAny": false, "sourceMap": false } }đây là tsconfig.json của tôi Tôi nên chỉnh sửa như thế nào?
Sedric Heidarizarei

Chỉ định điều này ở đâu trong Visual Studio 2017? Nó không có tsconfig.json
Akash Kava

1
@katopz Tôi đã làm, nhưng VS không quan tâm đến nó, tôi thấy rằng csprojtệp đó có một số phần tử xml bổ sung để bật / tắt những thứ như vậy.
Akash Kava

3
Tôi đã phải khởi động lại IDE (WebStorm) của mình để xem kết quả.
Coli

1
Tôi cũng phải đưa "dom"vào "lib"mảng nếu không tôi gặp các lỗi khác.
electrovir

22

Hãy thử gói này chứa định nghĩa kiểu cho es6-promise

npm install --save @types/es6-promise


2
'unional' không sai, nhưng câu trả lời của bạn là câu trả lời sắp xếp vấn đề tôi đang gặp phải. Cảm ơn!
tuliomarchetto

11

Nếu bạn đang sử dụng VS, hãy xóa tsconfig.json và nhấp chuột phải vào dự án trong Solution Explorer, sau đó nhấp vào Properties-> TypeScript Build in General thay đổi những điều sau

  • Phiên bản ECMAScript: ECMAScript 6

  • Hệ thống mô-đun: ES2015


@LukePighetti dự án trong giải pháp khám phá
Ivandro IG Jao


0

VS2019 dường như không nhận ra tệp tsconfig.json, vì vậy tùy chọn LIB sẽ không thay đổi ứng dụng. Đây là một cách để thêm LỜI HỨA cho bản đánh chữ chấp nhận ASYNC AWAIT.

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;

}

0

Đối với tôi, lỗi đã xảy ra trong các tệp thử nghiệm của tôi bên trong src/teststhư mục. Vì tôi sử dụng ts-nodeđể kiểm tra các .tstệp trực tiếp, tôi đã loại trừ src/tests/*trong của tôi tsconfig.json. Ngay sau khi tôi xóa dòng, lỗi đã biến mất (cuối cùng cũng có ý nghĩa).

Đề phòng trường hợp người khác đang gặp khó khăn với điều này trong các tệp thử nghiệm của mình.

CHỈNH SỬA: Tất nhiên bạn cần phải định cấu hình --libchính xác tùy chọn của mình như được nêu trong câu trả lời được chấp nhận. tsconfig.json --libTùy chọn của tôi hoạt động như sau:

"lib": [
    "es2018",
    "dom"
]

0

Cuối cùng tôi đã giải quyết được nó!
Lệnh của tôi trên thiết bị đầu cuối: Thông yarn tsc main.ts && nodejs main.js báo lỗi của tôi:

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.

Những gì tôi đã làm để giải quyết nó, là tham chiếu đến tệp tsconfig.json.
Tsconfig.json của tôi giống như sau:

{
    "compilerOptions": {
        "target": "ESNext",
        "lib": [
            "ES2015",
            "DOM"
        ]
    }
}

Và lệnh đầu cuối của tôi như sau: yarn tsc -p ./tsconfig.json && nodejs main.js Nếu tôi muốn chạy tệp .ts khác, tôi chỉ cần làm: yarn tsc -p ./tsconfig.json && nodejs file_name.js


-4

Tôi đang sử dụng VS2017 v15.8.2 và Typescript 2.4.2 trong một dự án Angular 4 (trong một dự án thư viện lớp trong giải pháp của tôi, không phải một dự án sắp chữ). Tôi có thể xóa lỗi / cảnh báo trong VS bằng cách tắt dịch vụ ngôn ngữ JavaScript :

Tùy chọn => Trình soạn thảo văn bản => JavaScript / TypeScript => Dịch vụ ngôn ngữ

Khởi động lại VS.

Hi vọng điêu nay co ich.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.