कोणीय: वादा, नक्शा, सेट और Iterator नहीं मिल सकता है


176

कोणीय स्थापित करने के बाद, टाइपप्रति संकलक रखें नहीं मिल के बारे में कुछ त्रुटियाँ हो रही Promise, Map, Setऔर Iterator

अब तक मैंने उन्हें अनदेखा कर दिया था, लेकिन अब मुझे जरूरत है Promiseइसलिए मेरा कोड काम कर सकता है।

import {Component} from 'angular2/core';
@Component({
    selector: 'greeting-cmp',
    template: `<div>{{ asyncGreeting | async}}</div>`
})
export class GreetingCmp {
    asyncGreeting: Promise<string> = new Promise(resolve => {
// after 1 second, the promise will resolve
        window.setTimeout(() => resolve('hello'), 1000);
    });
}

Additional information:
npm -v is 2.14.12
node -v is v4.3.1
typescript v is 1.6

त्रुटियाँ:

................ERROS OF MY CODE.................
    C:\Users\armyTik\Desktop\angular2\greeting_cmp.ts
    Error:(7, 20) TS2304: Cannot find name 'Promise'.
    Error:(7, 42) TS2304: Cannot find name 'Promise'.
    .........................................
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\platform\browser.d.ts
    Error:(77, 90) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\application_ref.d.ts
    Error:(83, 60) TS2304: Cannot find name 'Promise'.
    Error:(83, 146) TS2304: Cannot find name 'Promise'.
    Error:(96, 51) TS2304: Cannot find name 'Promise'.
    Error:(96, 147) TS2304: Cannot find name 'Promise'.
    Error:(133, 90) TS2304: Cannot find name 'Promise'.
    Error:(171, 81) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\change_detection\parser\locals.d.ts
    Error:(3, 14) TS2304: Cannot find name 'Map'.
    Error:(4, 42) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\debug\debug_node.d.ts
    Error:(14, 13) TS2304: Cannot find name 'Map'.
    Error:(24, 17) TS2304: Cannot find name 'Map'.
    Error:(25, 17) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\di\provider.d.ts
    Error:(436, 103) TS2304: Cannot find name 'Map'.
    Error:(436, 135) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\compiler.d.ts
    Error:(12, 50) TS2304: Cannot find name 'Promise'.
    Error:(16, 41) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\dynamic_component_loader.d.ts
    Error:(108, 136) TS2304: Cannot find name 'Promise'.
    Error:(156, 150) TS2304: Cannot find name 'Promise'.
    Error:(197, 128) TS2304: Cannot find name 'Promise'.
    Error:(203, 127) TS2304: Cannot find name 'Promise'.
    Error:(204, 141) TS2304: Cannot find name 'Promise'.
    Error:(205, 119) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\render\api.d.ts
    Error:(13, 13) TS2304: Cannot find name 'Map'.
    Error:(14, 84) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\async.d.ts
    Error:(27, 33) TS2304: Cannot find name 'Promise'.
    Error:(28, 45) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\collection.d.ts
    Error:(1, 25) TS2304: Cannot find name 'MapConstructor'.
    Error:(2, 25) TS2304: Cannot find name 'SetConstructor'.
    Error:(4, 27) TS2304: Cannot find name 'Map'.
    Error:(4, 39) TS2304: Cannot find name 'Map'.
    Error:(7, 9) TS2304: Cannot find name 'Map'.
    Error:(8, 30) TS2304: Cannot find name 'Map'.
    Error:(11, 43) TS2304: Cannot find name 'Map'.
    Error:(12, 27) TS2304: Cannot find name 'Map'.
    Error:(14, 23) TS2304: Cannot find name 'Map'.
    Error:(15, 25) TS2304: Cannot find name 'Map'.
    Error:(95, 41) TS2304: Cannot find name 'Set'.
    Error:(96, 22) TS2304: Cannot find name 'Set'.
    Error:(97, 25) TS2304: Cannot find name 'Set'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\lang.d.ts
    Error:(13, 17) TS2304: Cannot find name 'Map'.
    Error:(14, 17) TS2304: Cannot find name 'Set'.
    Error:(78, 59) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\promise.d.ts
    Error:(2, 14) TS2304: Cannot find name 'Promise'.
    Error:(7, 32) TS2304: Cannot find name 'Promise'.
    Error:(8, 38) TS2304: Cannot find name 'Promise'.
    Error:(9, 35) TS2304: Cannot find name 'Promise'.
    Error:(9, 93) TS2304: Cannot find name 'Promise'.
    Error:(10, 34) TS2304: Cannot find name 'Promise'.
    Error:(11, 32) TS2304: Cannot find name 'Promise'.
    Error:(11, 149) TS2304: Cannot find name 'Promise'.
    Error:(12, 43) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\headers.d.ts
    Error:(43, 59) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\url_search_params.d.ts
    Error:(11, 16) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\browser\browser_adapter.d.ts
    Error:(75, 33) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\dom\dom_adapter.d.ts
    Error:(85, 42) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\CoreOperators.d.ts
    Error:(35, 67) TS2304: Cannot find name 'Promise'.
    Error:(50, 66) TS2304: Cannot find name 'Promise'.
    Error:(89, 67) TS2304: Cannot find name 'Promise'.
    Error:(94, 38) TS2304: Cannot find name 'Promise'.
    Error:(94, 50) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\Observable.d.ts
    Error:(46, 62) TS2304: Cannot find name 'Promise'.
    Error:(47, 42) TS2304: Cannot find name 'Iterator'.
    Error:(103, 74) TS2304: Cannot find name 'Promise'.
    Error:(103, 84) TS2304: Cannot find name 'Promise'.
    Error:(143, 66) TS2304: Cannot find name 'Promise'.
    Error:(158, 65) TS2304: Cannot find name 'Promise'.
    Error:(201, 66) TS2304: Cannot find name 'Promise'.
    Error:(206, 38) TS2304: Cannot find name 'Promise'.
    Error:(206, 50) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\ForkJoinObservable.d.ts
    Error:(6, 50) TS2304: Cannot find name 'Promise'.
    Error:(7, 58) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\FromObservable.d.ts
    Error:(7, 38) TS2304: Cannot find name 'Promise'.
    Error:(7, 51) TS2304: Cannot find name 'Iterator'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\PromiseObservable.d.ts
    Error:(9, 31) TS2304: Cannot find name 'Promise'.
    Error:(10, 26) TS2304: Cannot find name 'Promise'.

1
Visual Studio 2015 के लिए टाइपस्क्रिप्ट का नवीनतम संस्करण स्थापित करें ।
मायलस्क

जवाबों:


177

टाइपस्क्रिप्ट ^ 2.0.0 के साथ कोणीय 5

यह कोणीय 2+ के पुराने संस्करणों के साथ भी काम करना चाहिए।

2.0.0 टाइपस्क्रिप्ट के साथ काम करने के लिए, मैंने निम्नलिखित कार्य किया।

npm install --save-dev @types/core-js

tsconfig.json

 "compilerOptions": {
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "mapRoot": "./",
    "module": "es6",
    "moduleResolution": "node",
    "noEmitOnError": true,
    "noImplicitAny": false,
    "outDir": "../dist/out-tsc",
    "sourceMap": true,
    "target": "es5",
    "typeRoots": [
      "../node_modules/@types"
    ],
    "types": [
      "core-js"
    ]
  }

टाइपस्क्रिप्ट 2.0.0 के साथ @types के बारे में अधिक।

  1. https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/
  2. https://www.npmjs.com/~types

उदाहरण स्थापित करें:

npm install --save-dev @types/core-js

डुप्लिकेट पहचानकर्ता त्रुटियों

यह सबसे अधिक संभावना है, क्योंकि डुप्लीकेट ईकमास्क्रिप्ट 6 टाइपिंग पहले से कहीं और से आयात की जा रही है, सबसे अधिक संभावना एक पुराने es6- शिम।

डबल चेक typings.d.tsसुनिश्चित करें कि कोई संदर्भ नहीं हैं es6es6यदि आपके पास कोई है तो अपनी टाइपिंग निर्देशिका से कोई संदर्भ निकालें ।

उदाहरण के लिए:

यह types:['core-js']टाइपिंग के साथ संघर्ष करेगा । json।

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332" 
    // es6-shim will also conflict
  }
}

भी शामिल है core-jsमें प्रकार सरणी में tsconfig.jsonकेवल जगह यह से आयात किया जाता होना चाहिए।

कोणीय सीएलआई 1.0.0-beta.30

यदि आप कोणीय-सीएलआई का उपयोग कर रहे हैं, तो इसमें लिबर ऐरे को हटा दें typings.json। यह प्रकारों में कोर-जे की घोषणा के साथ संघर्ष करता है।

"compilerOptions" : {
  ...
  // removed "lib": ["es6", dom"],
  ...
},
"types" : ["core-js"]

वेबस्टॉर्म / इंटेलीज उपयोगकर्ता कोणीय सीएलआई का उपयोग करते हुए

सुनिश्चित करें कि टाइपस्क्रिप्ट कंपाइलर में निर्मित अक्षम है। यह सीएलआई के साथ संघर्ष करेगा। सीएलआई के साथ अपने टाइपस्क्रिप्ट को संकलित करने के लिए आप एक ng serveकॉन्फ़िगरेशन सेटअप कर सकते हैं ।

यहां छवि विवरण दर्ज करें

Tsconfig compilerOptions lib बनाम प्रकार

यदि आप कोर js प्रकार की परिभाषाएँ स्थापित नहीं करना चाहते हैं तो कुछ es6 लाइब्रेरी हैं जो टाइपस्क्रिप्ट के साथ शामिल हैं। वे lib: []tsconfig में संपत्ति के माध्यम से उपयोग किए जाते हैं ।

उदाहरण के लिए यहां देखें: https://www.typescriptlang.org/docs/handbook/compiler-options.html

नोट: - यदि कोई निर्दिष्ट नहीं है, तो डिफ़ॉल्ट लाइब्रेरी इंजेक्ट की जाती है। डिफ़ॉल्ट लायब्रेरी इंजेक्ट की गई है: library For-getget ES5: DOM, ES5, ScriptHost 6 - Ingetget ES6 के लिए: DOM, ES6, DOM.Iterable, ScriptHost

tl; डॉ

संक्षिप्त उत्तर या तो "lib": [ "es6", "dom" ]या "types": ["core-js"]संकल्प किया जा सकता है can't find Promise,Map, Set and Iterator। हालांकि दोनों का उपयोग करने से डुप्लिकेट पहचानकर्ता त्रुटियों का कारण होगा।


1
अपडेट और अच्छे उत्तर के लिए धन्यवाद। मैंने आपके उत्तर को स्वीकार कर लिया क्योंकि लोग अभी भी यहाँ आ रहे हैं ताकि यह त्रुटि दूर हो सके। क्या कोई मौका है जो आप आरसी 5 को अपना जवाब अपडेट करते हैं? मैं इस त्रुटि का सामना कर रहा हूं और आपके उत्तर का पालन करते हुए, मैं वादे का उपयोग करने में सक्षम था, लेकिन अब node_modules \ @types \ es6-shim \ index.d.ts फ़ाइल से बहुत सारी त्रुटियां हैं: "डुप्लीकेट पहचानकर्ता" प्रॉपर्टीके "। लाइनों में: 6,10,248,283,290 और इतने पर; .. इसमें भी त्रुटि: C: \ Users \ armyTik \ Desktop \ rc5 \ store-app-02 \ नोड_modules \ typecript \ lib \ lib. lib2015.core.d.ts: 17 : 13 डुप्लीकेट पहचानकर्ता 'प्रॉपर्टीके'।
स्टैव अल्फी

मैंने अपना उत्तर अपडेट कर दिया। उम्मीद है कि स्पष्ट चीजों को थोड़ा मदद करता है। यह RC5 और RC4 दोनों के लिए समान होना चाहिए, मेरा मानना ​​है।
क्राइस होलेनबेक

मैंने इसे केवल कोर-जेएस को प्रतिबिंबित करने के लिए बदल दिया ताकि यह उम्मीद से कम भ्रमित हो। Core-js और es6 दोनों es6 विशिष्ट प्रकार की घोषणाओं के लिए हैं। मैं कोर-जे को पसंद करता हूं, क्योंकि यह es6-shim से अधिक कवर लगता है।
क्रिश होलेनबेक

अद्यतन के लिए धन्यवाद। मुझे इस बार नसीब नहीं हुआ। मैंने अपनी वर्तमान त्रुटियों को अद्यतन किया।
स्टैव अल्फी

2
शायद, लिबास बेहतर समाधान है। github.com/angular/angular/blob/…
एलेक्स

75

मेरी भी यही समस्या है - "Promise not found" - जब कोड एक प्रॉमिस ऑब्जेक्ट बनाना चाहता है।

स्टैकओवरफ़्लो पर पाए जाने वाले कुछ समाधान की कोशिश की, जिसमें system.config ({...}) को बाहर निकालना शामिल है। system.js बनाने के लिए और इसे index.html में शामिल किया गया है।

अंत में मैंने समस्या हल कर दी। मुद्दा यह है कि, index.html में, es6-shim.min.js शामिल है। हालाँकि, tsconfig.json में, "compilerOptions" के तहत "लक्ष्य" संपत्ति में "es5" का मूल्य है। मैं इसे "es6" में बदलने के बाद, त्रुटि दूर हो गई है।


2
मेरे लिए भी यही मुद्दा था। क्या किसी को पता है कि यह उस त्रुटि का कारण क्यों होगा?
निक ब्रैडी

फिक्स्ड भी त्रुटियों मैं IntelliJ IDEA / WebStorm में
bentolor

5
लेकिन js कोड को es5 पर ट्रांसप्लान्ट करना होगा क्योंकि सभी ब्राउज़र es6 के लिए तैयार नहीं हैं। क्या किसी को विभिन्न ब्राउज़रों में es6 मुद्दे मिले हैं। Thankx!
बम्नापाली

मेरे लिए angular2.1.0 पर काम करता है। संकलक 2.1.0 कोर 2.1.0 आम 2.1.0 rxjs5.0.0-beta.12 प्लेटफ़ॉर्म-ब्राउज़र 2.1.0
फरहाद गुअरज़ी

धन्यवाद! आपने मुझे बहुत समय बचाया
क्रिस्टियन ट्रैना ने

63

कोणीय 2 अंतिम

- es5 समर्थन (टीएस 2.0.0 + के साथ पूरी तरह से काम करता है)

प्रति अपडेट es6-shimअभी समर्थित नहीं है, यदि आपके पास दोनों टाइपिंग एक साथ es6-shimऔर core-jsएक साथ स्थापित हैं। es6-shimTsconfig.json में उल्लेख करके टाइपिंग निकालें । अब आप नीचे समर्थन के core-jsलिए टाइप कर सकते हैंes5main.ts

///<reference path="./../typings/globals/core-js/index.d.ts"/>

tsconfig.json

exclude: [
   "node_modules", //<-- this would be needed in case of VS2015
   "node_modules/@typings",
   "typings"
]

- es6 सपोर्ट

आपको बस "target"संपत्ति सेट करने की आवश्यकता है es6, फिर सभी त्रुटि दूर हो जाएगी। और ट्रांसप्लड कोड es6प्रारूप में होगा ।


आपका बहुत बहुत धन्यवाद। मुझे अपने दम पर उसे खोजने का कोई मौका नहीं मिला।
स्टैव अल्फी

@StavAlfi np .. जो होता है .. ख़ुशी आपकी मदद करने के लिए .. धन्यवाद :)
पंकज पारकर

अगर आप क्विकस्टार्ट ट्यूटोरियल में प्रोजेक्ट सेटअप का उपयोग करते हैं तो इसे बीटा.7 के साथ स्थापित किया जाना चाहिए। आप कोणीय के किस बीटा का उपयोग करते हैं? मैं कोणीय परिवर्तन के साथ 2.0.0 बीटा.7
मार्क

1
पैकेज। Quickstart ट्यूटोरियल में json कोणीय 2 के वास्तविक संस्करण का समर्थन करता है। यदि आप पैकेज.json की नकल करते हैं। tscconfig.json और typings.json आपके प्रोजेक्ट रूट dir और कॉल npm-स्थापना प्रोजेक्ट सेटअप ठीक हो जाएगा।
मार्क

3
@PankajParkar 2.0.0-rc.1। मैंने केवल कुछ दिनों पहले ही एंगुलर का उपयोग करना शुरू कर दिया था, हालांकि मैंने काम किया था कि डॉक्स [यहां] () शुरू किया। में package.jsonवे डाल "angular2-in-memory-web-api": "0.0.7"और कोणीय सामान के बाकी आता से "@angular/<module>": "2.0.0-rc.1"जहां <module>है common, compiler, core, http, platform-browser, platform-browser-dynamic, router, router-deprecatedऔर upgrade
हेक्टर

42

कोणीय 2.0.0-rc.4 के रूप में अद्यतन किया गया

TLDR;

  1. Es6 को ट्रांसपाइल

    • त्रुटि दूर हो जाती है (w / कुछ gotchas)।
  2. Es5 को ट्रांसपाइल

    • टाइपिंग स्थापित करें
    • es6 शिम स्थापित करें
    • सुनिश्चित करें कि यह आपके कोड के साथ संकलित करता है।
    • त्रुटि दूर हो जाती है।

पाठकों के लिए:

विकल्प 1: es6 या es2015 के लिए ट्रांसपाइल

tsconfig.json:

{
  "compilerOptions": {
    "target": "es6",
    "module": "system",
    "moduleResolution": "node",
     ...
  },
"exclude": [
    "node_modules",
    "jspm_packages"
  ]
}

ध्यान रखें कि इस समय uglifyjs es6 का समर्थन नहीं करता है । यह आपको उत्पादन बंडल बनाने से प्रभावित कर सकता है।

विकल्प 2: es5 के लिए ट्रांसपाइल, टाइपिंग स्थापित करें, और फिर es6- शिम स्थापित करें:

tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
     ...
  },
  "exclude": [
    "node_modules",
    "jspm_packages"
  ]
}

टाइपिंग स्थापित करें, फिर es6-shim स्थापित करें:

npm install typings --saveDev
typings install dt~es6-shim --global --save

यदि आप इस मार्ग पर जाते हैं, तो आपको यह सुनिश्चित करने की आवश्यकता है कि टाइपस्क्रिप्ट कंपाइलर .d.ts फ़ाइल ढूँढ सकता है।

आपके पास दो विकल्प हैं:

ए। सुनिश्चित करें कि आपका tsconfig.json टाइपिंग फ़ोल्डर के समान स्तर पर है।

ख। अपने main.ts फ़ाइल में एक संदर्भ शामिल करें जहाँ आपका कोणीय 2 अनुप्रयोग बूटस्ट्रैप है।

विकल्प A: सुनिश्चित करें कि आपका tsconfig.json टाइपिंग फ़ोल्डर के समान स्तर पर है।

नोट: टाइपिंग फ़ोल्डर को बाहर करने के लिए बहिष्कृत ध्वज का उपयोग न करें।

project
|-- src
|-- node_modules
|-- package.json
|-- typings
|-- tsconfig.json

विकल्प B: बूटस्ट्रैप से पहले मुख्य फ़ाइल में संदर्भ (ऐसा न करें):

जैसा कि अन्य उत्तरों में दिखाया गया है, यह फ़ाइल अब एंगुलर द्वारा शामिल नहीं है

main.ts:

/// <reference path="../../typings/globals/es6-shim/index.d.ts" />

2
विकल्प 1 RC4 के लिए पूरी तरह से अच्छा काम करता है। नेमस्पेस विवादों से बचने के लिए कोर-जेएस और अन्य टाइपिंग जो प्रोमिस, मैप आदि प्रदान करते हैं, उन्हें दूर करना सुनिश्चित करें।
wtfzn

1
थैंक्स, 1 ने काम किया। कोर- js या es6- शिम (दोनों नहीं) की आवश्यकता है। और फिर अपने ts संकलन प्रक्रिया में ./typings/index.d.ts शामिल करें।
k3a

1
--saveDevअब काम नहीं करता है। --save-devकर देता है।
जॉर्ज सोवेतोव

1
typingsविश्व स्तर पर स्थापित नहीं होना चाहिए ?
जॉर्ज सोवेतोव


8

इसी से मेरा काम बना है।

जाँच करें कि क्या कोई typings.jsonफ़ाइल मौजूद है ,

यह कुछ इस तरह दिखता है,

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160317120654",
    "jasmine": "registry:dt/jasmine#2.2.0+20160505161446",
    "node": "registry:dt/node#6.0.0+20160613154055"
  }
}

विश्व स्तर पर टाइपिंग पैकेज स्थापित करें।

sudo npm install -g typings

टाइपिंग स्थापित करने के बाद , चलाएँ

typings install

फिर सर्वर को पुनरारंभ करें।


6

मेरे पास इसी तरह का मुद्दा था जहां वह Promise.resolve () विधि को मान्यता नहीं दे रहा था । मैंने "लक्ष्य" मान को tsconfig.json में ES5 से ES6 में बदल दिया । इससे समस्या हल हो गई।

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


हाँ, इससे मुझे tsconfig.json में ES5 से ES6 के लिए "परिवर्तित" लक्ष्य "निश्चित रूप से" मदद मिली।
ग्रेग ट्रेवेलिक

5

चूँकि Angular 2 RC 0 पर गया था, /angular2/typings/browser.d.ts अब Angular 2 वितरण का हिस्सा नहीं है। फ़ाइल को अलग से स्थापित किया जा सकता है।

यहाँ से: https://github.com/angular/angular/issues/8513 कुछ विकल्प हैं। जो मेरे लिए काम करता था वह था:

typings install es6-shim --ambient --save

// In your app.ts
/// <reference path="typings/browser.d.ts" />

1
इसके लिए धन्यवाद, लेकिन टाइपिंग के लिए कमांड 1.0+ है: टाइपिंग dt ~ es6-shim --save --global ( github.com/typings/typings/issues/517 ) इंस्टॉल करें और फिर /// <path = "का उपयोग करें" टाइपिंग / es6-shim / es6-shim.d.ts "/>
साइमन ट्रूहेला

4

मैंने TS बूटस्ट्रैप फ़ाइल में कोई ट्रिपल-स्लैश संदर्भ जोड़ने के बिना, ES6 में परिवर्तन (जो कि @DatBoi ने कहा कि जैसे ही समस्याओं का एक गुच्छा लाता है) को ठीक करने में कामयाब रहा, जैसा कि VS2015 का NodeJSऔर / या NPMबंडल किया गया है या typingsविश्व स्तर पर स्थापित है ।

यहाँ मैंने कुछ चरणों में क्या किया है:

  • typingsप्रोजेक्ट की package.jsonफ़ाइल में जोड़ा गया ।
  • प्रत्येक एनपीएम कार्रवाई के बाद निष्पादित / अपडेट करने के लिए फ़ाइल scriptमें एक ब्लॉक जोड़ा ।package.jsontypings
  • typings.jsonप्रोजेक्ट के रूट फ़ोल्डर में एक फाइल को जोड़ा गया core-js, जिसमें एक संदर्भ है , जो ES5 / ES6 मुद्दों को ठीक करने के लिए इस समय सबसे अच्छा शिम / पॉलीफिल पैकेज में से एक है।

यहां बताया गया है कि package.jsonफ़ाइल कैसे दिखनी चाहिए (केवल प्रासंगिक लाइनें):

{
  "version": "1.0.0",
  "name": "YourProject",
  "private": true,
  "dependencies": {
    ...
    "typings": "^1.3.2",
    ...
  },
  "devDependencies": {
    ...
  },
  "scripts": {
      "postinstall": "typings install"
  }
}

और यहाँ typings.jsonफ़ाइल है:

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160621231320"
  }
}

( Jasmineऔर Nodeआवश्यकता नहीं है, लेकिन मैं आपको भविष्य में उनकी आवश्यकता होने पर उन्हें रखने का सुझाव देता हूं)।

यह फिक्स Angular2 RC1 से RC4 के साथ ठीक काम कर रहा है, जो कि मुझे चाहिए था, लेकिन मुझे लगता है कि यह अन्य ES6- सक्षम लाइब्रेरी पैकेज के साथ भी इसी तरह के मुद्दों को ठीक करेगा।

AFAIK, मुझे लगता है कि VS2015 डिफ़ॉल्ट सेटिंग्स को गड़बड़ किए बिना इसे ठीक करने का यह सबसे साफ संभव तरीका है।

अधिक जानकारी और समस्या के विस्तृत विश्लेषण के लिए, मैं भी अपने ब्लॉग पर इस पोस्ट को पढ़ने का सुझाव देता हूं।


3

यदि टाइपिंग v1.0 + कमांड के साथ Angular2 RC1 का उपयोग कर रहे हैं:

typings install dt~core-js --save --global

कोर-जेएस परिभाषा को स्थापित करने के लिए और फिर अपने main.ts में अपने वैश्विक सूचकांक का संदर्भ दें:

/// <reference path="../../../typings/index.d.ts" />

यदि es6-shim या कुछ अन्य शिम लाइब्रेरी का उपयोग कर रहे हैं, तो इसके बदले टाइपिंग स्थापित करें

Https://github.com/typings/typings/issues/517 पर देखें


2

मैंने देखा कि इन समस्याओं को कोणीय 5 से कोणीय 6 में अपग्रेड करने के बाद दिखाई दे रहा है। मैं इसे VS2017 में निम्नलिखित करके इसे ठीक करने में सक्षम था:

  • टाइपस्क्रिप्ट एसडीके के मेरे विशेष संस्करण के लिए टाइपस्क्रिप्ट एसडीके स्थापित किया गया था (विजुअल स्टूडियो इंस्टॉलर के माध्यम से) 2.9
  • सुनिश्चित करें कि मॉड्यूल सिस्टम प्रोजेक्ट संपत्ति मेरे tsconfig.json: ES2015 में मेल खाने के लिए सेट है। यदि tsconfig फ़ाइल प्रोजेक्ट की जड़ में है, तो यह अक्सर सिंक में स्वचालित रूप से होता है। हालाँकि, चूंकि मैं VS कोणीय टेम्प्लेट का उपयोग कर रहा था, इसलिए यह इन फ़ाइलों को "क्लाइंटऐप" सबफ़ोल्डर में रखता है, और मॉड्यूल सिस्टम प्रोजेक्ट गुण सेट नहीं किया गया था।

VS2017 परियोजना गुण

tsconfig.json:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "lib": [
      "es2017",
      "dom"
    ],
    "module": "es2015",
    "baseUrl": "./"
  }
}

1

मुझे अपनी कक्षा के अंदर एक वादा वस्तु बनाते समय एक ही समस्या थी। लक्ष्य नाम को "es5" से "es6" में बदलकर मेरी समस्या हल कर दी।


1

टाइपिंग को फिर से स्थापित करने के लिए एक और संभावित समाधान है:
यह मेरे लिए काम करता है"angular2": "2.0.0-beta.15"

  1. npm clean cache
  2. npm install
  3. npm install -g typings
  4. typingsप्रोजेक्ट से निर्देशिका हटाएं (डायरेक्ट्री वेप टाइपिंग मॉड्यूल स्थापित हैं)
  5. typings install
  6. npm run

1

एक और अच्छा उपाय। आपको सामग्री के साथ प्रोजेक्ट की रूट डायरेक्टरी में फ़ाइल टाइपिंग। Json बनाने की आवश्यकता है:

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160725163759",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160909174046"
  }
}

फिर वैश्विक या स्थानीय टाइपिंग पैकेज स्थापित करें, अगर यह स्थापित नहीं है (मैं इसे वैश्विक स्थापित कर रहा हूं):

sudo npm install --global typings

प्रोजेक्ट रूट डायरेक्टरी रन कमांड में:

typings install

उसके बाद समस्या हल हो जाती है। Tsconfig के लक्ष्य को es6 या es7 में बदलने की आवश्यकता नहीं है। आपके वेब एप्लिकेशन ब्राउज़र के कुछ पुराने संस्करण के बाद समर्थन नहीं करते हैं।


1

यदि आप यहां आए क्योंकि आप Visual Studio 2017 में इन त्रुटियों को देखते हैं तो आपको ऊपर की तरह एक अलग समस्या है, यदि आप संकलन करने में सफल होते हैं। ऐसा इसलिए है क्योंकि भाषा सेवा आपके tsconfig.json को नहीं चुनती है।

https://developercommunity.visualstudio.com/content/problem/208941/vs-156-ignores-tsconfigjson-and-typescriptcompileb.html

आपको अपने tsconfig.json के बिल्ड एक्शन को "कंटेंट" (राइट क्लिक -> प्रॉपर्टीज़) पर सेट करना होगा, फिर वीएस इसे पिक करेगा।


0

मैंने पाया कि boot.ts में संदर्भ सही मार्ग नहीं था। /// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />वादा त्रुटियों को हल करने के लिए उस पथ को अद्यतन करना ।


0

मैं एक कोणीय 2 ट्यूटोरियल (नायक) के साथ प्रशिक्षण ले रहा हूं।
Theses जवाब में टिप्पणी की गई @ प्रकार / कोर-जेएस स्थापित करने के बाद, मुझे "डुप्लिकेट पहचानकर्ता" त्रुटि मिली।
मेरे मामले में, इसे tsconfig.json में लिबर लाइन को हटाने के रूप में हल किया गया था।

// "परिवाद": ["es2015", "डोम"]


-1

मेरी फ़ाइल संरचना नीचे दी गई है:

project
 |--node-modules
 |   |--angular2
 |   |   |--typings
 |   |   |   |--browser.d.ts
 |--src
 |--app.ts

अपने app.ts के शीर्ष में नीचे पेस्ट करें और आपकी समस्या हल हो गई

/// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />

Tsconfig.json में ES6 को इंगित करने के लिए TARGET प्रविष्टि को बदलना मेरे लिए इस मुद्दे को ठीक कर दिया जैसा कि ऊपर दिए गए कुछ उत्तरों में बताया गया है।
theCopyPaster

-1

मुझे एक ही मुद्दा मिला है, और इसे github https://github.com/angular/angular-cli/issues/1901 में खोजने में सक्षम है , जो बताता है कि यह एक मुद्दा था typescript@2.0.2

2.0.0विश्व स्तर पर और स्थानीय स्तर पर दोनों के लिए डाउनग्रेड टाइपस्क्रिप्ट ने मुझे इसे हल करने में मदद की।

वैश्विक स्तर पर:

npm uninstall typescript -g
npm cache clean
npm install typescript@2.0.0 -g

स्थानीय रूप से: आप नए द्वारा बनाए गए प्रोजेक्ट फ़ोल्डर में जाएं

npm uninstall typescript
npm cache clean
npm install typescript@2.0.0

मैं भी से package.json भीतर टाइपप्रति का संस्करण बदल ^2.0.0करने के लिए 2.0.0है, लेकिन जब तक मैं स्थानीय टाइपप्रति स्थापना डाउनग्रेड यह काम नहीं किया।


लोग इसे क्यों कम कर रहे हैं, मैं जानना चाहूंगा कि यह एक बुरा विचार क्यों है। यदि टाइपस्क्रिप्ट एक ट्रांसप्लड भाषा है और इसे जावास्क्रिप्ट में बदल दिया जाता है, तो यह केवल आपके ब्राउज़र की तरह सुरक्षित है, इसलिए ऐसा नहीं है कि इसमें कोई जोखिम नहीं है, है ना?
user3505901
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.