2015-12-25 10 views
12

मैं मूल कोणीय 2 वर्कफ़्लो बनाने के लिए जेएसपीएम का उपयोग कर रहा हूं। यह काम करता है (https://github.com/simonh1000/Angular2-beta-jspm देखें), लेकिन मुझे इंटेलिजेंस नहीं मिल रहा है क्योंकि वीएस कोड में कोणीय जेएसपीएम मॉड्यूल नहीं दिखते हैं, जैसा कि छवि में देखा जा सकता है। मुझे क्या करना चाहिए?वीएस कोड/jspm_packages का उपयोग नहीं कर सकता; systemjs angular2 ts फ़ाइलों को नहीं देख सकता

Intellisense can't see jspm modules

और यहाँ मेरी tsconfig.json है एरिक से सुझाव भी शामिल है:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "removeComments": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "sourceMap": true, 
    "moduleResolution": "node" 
    } 
} 

मैं इंपोर्ट स्टेटमेंट की इस तरह का उपयोग करके वी.एस. संहिता में कुछ प्रगति कर सकते हैं

import { Component, View } from '../jspm_packages/npm/[email protected].0/ts/core'; 

लेकिन तो जब मैं इसे प्रभाव में चलाता हूं तो मुझे एक त्रुटि मिलती है:

GET http://127.0.0.1:8080/jspm_packages/npm/[email protected]/ts/core.js 

यहाँ config.js

System.config({ 
    baseURL: "/", 
    defaultJSExtensions: true, 
    transpiler: "typescript", 
    typescriptOptions: { 
    "module": "commonjs", 
    "emitDecoratorMetadata": true 
    }, 
    paths: { 
    "github:*": "jspm_packages/github/*", 
    "npm:*": "jspm_packages/npm/*" 
    }, 

    packages: { 
    "app": { 
     "main": "main", 
     "defaultExtension": "ts" 
    } 
    }, 
+0

जोड़े' moduleResolution खून बह रहा किनारे पर जीवन है ...। –

+0

आपका वीएससीओडी संस्करण पुराना हो सकता है। मुझे भी एक ही त्रुटि का सामना करना पड़ रहा है। और एक समाधान जैसा कि @EricMartinez –

+0

@EricMartinez द्वारा उल्लेखित किया गया है मैंने आपके ऊपर उल्लिखित समाधान की कोशिश की लेकिन समस्या को किसी अन्य समाधान से दूर करने में असमर्थ? –

उत्तर

6

इस पल में होने की उम्मीद है क्योंकि टाइपप्रति संकलक यह नहीं पता कि JSPM संकुल "पा" से एक उद्धरण है।

वीएससीओडी टाइपस्क्रिप्ट कंपाइलर पर निर्भर करता है, और संकलक केवल एनपीएम पैकेज के माध्यम से मॉड्यूल की तलाश करना जानता है (उदाहरण के लिए node_modules/ के अंदर देखें - यही "moduleResolution": "node" करता है)।

चूंकि आपने एनपीएम के माध्यम से कोणीय 2 स्थापित नहीं किया है, यह node_modules/ फ़ोल्डर में नहीं है और संकलक इसे नहीं ढूंढता है। यदि आप tsc कमांड लाइन कंपाइलर चला रहे थे तो आपको वही त्रुटि मिलनी चाहिए।

समाधान beingdiscussed कर रहे हैं और ऐसा लगता है टाइपप्रति @ अगले paths की एक सूची मॉड्यूल देखने के लिए manually specify करने के लिए कुछ बुनियादी समर्थन (मैं अभी तक यह परीक्षण नहीं किया है)। यह आदर्श प्रतीत नहीं होता है, हालांकि जब भी आपकी जेएसपीएम निर्भरता बदलती है तो आपको मैन्युअल रूप से इस सूची को बनाए रखना होगा।

एक वैकल्पिक JSPM (जैसे npm install angular2 --save या --save-dev) के अलावा NPM के माध्यम से कोणीय 2 स्थापित करने के लिए है, लेकिन है कि निर्भरता डुप्लिकेट और जब वे बदल भी मैनुअल रखरखाव की आवश्यकता है। `CompilerOptions` के तहत अपने tsconfig.json में node`:

इस तरह

+0

क्या इस उद्देश्य के लिए, बजाय n कोणीय 2 - सेव-देव 'स्थापित करना संभव होगा? लेकिन फिर भी, मैं मानता हूं, यह आदर्श से कम है। एक विचार मुझे सिंक्रनाइज़ेशन की आवश्यकता को कम करना था एनपीएम स्क्रिप्ट (या जेएसपीएम स्क्रिप्ट?) बनाना जो अनिवार्य रूप से 'npm इंस्टॉल $ {packageName} करता है - सेव-देव && jspm इंस्टॉल npm: $ {packageName}' (हालांकि आप इस परिदृश्य में परिवर्तनीय प्रतिस्थापन करेगा; इस तरह, जब आप इस स्क्रिप्ट को चलाते हैं, तो यह आपके लिए दोनों एक ही समय में करेगा। – fourpastmidnight

+0

हाँ '- सेव-देव' भी मुझे लगता है कि काम करने के लिए मेरा जवाब अपडेट किया गया है यह स्क्रिप्ट मुझे अनुमान लगाने में मदद करेगी, लेकिन अन्य मुद्दे हैं जैसे कि जब आप एक निर्भरता अपडेट करते हैं, या जब आप एक को हटाते हैं तो एनपीएम और जेएसपीएम दोनों से हटाते हैं, तो – Nico

+0

अच्छा बिंदु - प्राप्त नहीं हुआ निर्भरताओं को अद्यतन करने और हटाने पर विचार करने के लिए मेरी विचार प्रक्रिया में काफी दूर है - लेकिन वे बहुत महत्वपूर्ण विकास वर्कफ़्लो प्रक्रियाएं हैं। इसलिए, अधिक समग्र दृष्टिकोण की आवश्यकता, टाइपस्क्रिप्ट से 'एला प्रथम श्रेणी का समर्थन। – fourpastmidnight

संबंधित मुद्दे