ts ES5 / ES3 में एक async फ़ंक्शन या विधि के लिए 'प्रॉमिस' कंस्ट्रक्टर की आवश्यकता होती है


99

नमस्कार मैं अपने टाइपस्क्रिप्ट प्रोजेक्ट में async / प्रतीक्षा का उपयोग कर रहा हूं, लेकिन मुझे यह लॉग इन करना है:

[ts] ES5 / ES3 में एक async फ़ंक्शन या विधि के लिए 'प्रॉमिस' कंस्ट्रक्टर की आवश्यकता होती है। सुनिश्चित करें कि आपके पास 'वादा' निर्माता के लिए एक घोषणा है या अपने --libविकल्प में 'ES2015' शामिल करें ।

मैं इसे कैसे हल कर सकता हूं?

जवाबों:


146

जैसा कि त्रुटि संदेश कहता है, lib: es2015अपने tsconfig.json में जोड़ें

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

अद्यतन: यदि यह आपके लिए काम नहीं करता है, तो यह प्रयास करें:

JetBrains IDE जैसे WebStorm, डिफ़ॉल्ट रूप से अपने स्वयं के कार्यान्वयन का उपयोग करते हैं। सुनिश्चित करें कि आप इसके बजाय टाइपस्क्रिप्ट भाषा सेवा का उपयोग करने के लिए इसे कॉन्फ़िगर करते हैं।

विज़ुअल स्टूडियो के लिए, प्रोजेक्ट फ़ाइलें और tsconfig.jsonपरस्पर अनन्य हैं। आपको अपनी परियोजना को सीधे कॉन्फ़िगर करने की आवश्यकता होगी।

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


{ "compilerOptions": { "module": "commonjs", "target": "es5", "noImplicitAny": false, "sourceMap": false } }यह मेरा tsconfig.json है मुझे कैसे संपादित करना चाहिए?
सेड्रिक हेइडरिज़ारेई

दृश्य स्टूडियो 2017 में इसे कहां निर्दिष्ट करना है? इसमें tsconfig.json नहीं है
आकाश काव

1
@katopz मैंने किया था, लेकिन वीएस इसके बारे में परवाह नहीं करता है, मैंने पाया कि csprojऐसी चीजों को सक्षम / अक्षम करने के लिए फ़ाइल में कुछ अतिरिक्त xml तत्व हैं।
आकाश काव

3
मुझे परिणाम देखने के लिए अपना IDE (WebStorm) पुनः आरंभ करना पड़ा।
कोली

1
मैं शामिल करने के लिए किया था "dom"में "lib"सरणी के रूप में अच्छी तरह से या मैं अन्य त्रुटियों को मिलता है।
इलेक्ट्रोविर

22

इस पैकेज को आज़माएं जिसमें es6-वादा के लिए प्रकार की परिभाषाएँ हैं

npm install --save @types/es6-promise


2
'unional' गलत नहीं है, लेकिन आपका जवाब वही था जो उस मुद्दे को हल करता है जो मैं कर रहा था। धन्यवाद!
तुलीओमारचेत्तो

12

आप वी.एस. पर हैं, tsconfig.json हटा सकते हैं और सही समाधान Explorer में परियोजना क्लिक करें, फिर पर क्लिक करें गुण> सामान्य में टाइपप्रति बिल्ड निम्नलिखित बदल

  • ECMAScript संस्करण: ECMAScript 6

  • मॉड्यूल सिस्टम: ES2015


समाधान-खोजकर्ता में @LukePighetti परियोजना
Ivandro IG Jao


0

VS2019 tsconfig.json फ़ाइल की पहचान नहीं करता है, इसलिए LIB विकल्प एप्लिकेशन को नहीं बदलेगा। यह ASYNC AWAIT को स्वीकार करने के लिए टाइपस्क्रिप्ट के लिए 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;

}

0

मेरे लिए src/testsफ़ोल्डर के अंदर मेरी परीक्षण फ़ाइलों में त्रुटि हुई । चूंकि मैं सीधे फाइलों के ts-nodeपरीक्षण के लिए उपयोग करता हूं .ts, इसलिए मैंने src/tests/*अपने को बाहर कर दिया tsconfig.json। जैसे ही मैंने डिलीट की लाइन डिलीट हो गई (जो अंत में समझ में आता है)।

बस किसी और मामले में अपनी परीक्षण फ़ाइलों में इस के साथ संघर्ष कर रहा है।

संपादित करें: बेशक आपको --libस्वीकार किए गए उत्तर में उल्लिखित अपने विकल्प को सही ढंग से कॉन्फ़िगर करने की आवश्यकता है । मेरा tsconfig.json --libविकल्प निम्नानुसार काम करता है:

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

0

मैं अंत में इसे हल करने में कामयाब रहा हूँ!
टर्मिनल पर मेरा आदेश: 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


-4

मैं एक कोणीय 4 परियोजना में VS2017 v15.8.2 और टाइपस्क्रिप्ट 2.4.2 का उपयोग कर रहा हूं (मेरे समाधान में क्लास लाइब्रेरी प्रोजेक्ट के तहत, टाइपस्क्रिप्ट प्रोजेक्ट नहीं)। मैं जावास्क्रिप्ट भाषा सेवा को अक्षम करके VS में त्रुटि / चेतावनी को हटाने में सक्षम था :

विकल्प => पाठ संपादक => जावास्क्रिप्ट / टाइपस्क्रिप्ट => भाषा सेवा

फिर से शुरू वी.एस.

उम्मीद है की यह मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.