2015-12-25 7 views
12

Używam JSPM do tworzenia podstawowego przepływu pracy Angular 2. Działa (zobacz https://github.com/simonh1000/Angular2-beta-jspm), ale nie dostaję intellisense, ponieważ kod VS nie widzi Angularnych modułów jspm, jak widać na obrazku. Co powinienem zrobić?Kod VS nie może używać/jspm_packages; systemjs nie widzi plików tcular2 ts

Intellisense can't see jspm modules

A oto mój tsconfig.json włącznie z sugestią Eric:

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

mogę poczynić pewne postępy w Kodeksie VS przy użyciu tego rodzaju instrukcji import

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

Ale wtedy pojawia się błąd, gdy uruchamiam go w następujący sposób:

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

Oto wyciąg z 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

Dodaj 'moduleResolution: node' w tsconfig.json pod' compilerOptions'. –

+0

może być Twoja wersja VSCode jest stara. ja też mam ten sam błąd. i jedno rozwiązanie jest jak wspomniano @EricMartinez –

+0

@EricMartinez i wypróbowałem powyższe rozwiązanie, ale nie można rozwiązać problemu żadnego innego rozwiązania? –

Odpowiedz

6

Oczekuje się, że w tej chwili, ponieważ kompilator maszynopis nie wie, w jaki sposób „znaleźć” pakiety JSPM.

VSCode polega na kompilatorze TypeScript, a kompilator zna tylko moduły poprzez pakiety NPM (np. Zajrzyj do wnętrza node_modules/ - tak robi "moduleResolution": "node").

Ponieważ nie zainstalowano Angular 2 za pośrednictwem NPM, nie ma go w folderze node_modules/, a kompilator go nie znajduje. Powinieneś otrzymać ten sam błąd, jeśli używasz kompilatora wiersza poleceń tsc.

Rozwiązania są beingdiscussed i wydaje maszynopis @ obok ma pewne podstawowe wsparcie manually specify lista paths szukać modułów (nie testowałem go jeszcze). Nie wydaje się to idealne, ponieważ będziesz musiał ręcznie utrzymywać tę listę za każdym razem, gdy zmienia się zależność JSPM.

Alternatywą jest instalacja Angular 2 za pomocą NPM oprócz JSPM (na przykład npm install angular2 --save lub --save-dev), ale powiela to zależność i wymaga również konserwacji ręcznej, gdy ulegną one zmianie.

Takie jest życie na krawędzi krwawienia ...

+0

Czy w tym celu można zamiast tego zainstalować 'npm install kąt2 - zapisz-dev'? Ale nadal, zgadzam się, to mniej niż idealne. Myślą, że musiałem zminimalizować potrzebę synchronizacji jest tworzenie skryptu npm (lub skryptu jspm?), Który zasadniczo robi 'npm install $ {packageName} --save-dev && jspm instaluje npm: $ {packageName}' (jednak w tym scenariuszu dokonałby się zmienny zamiennik, w ten sposób, po uruchomieniu skryptu, zrobi to za ciebie jednocześnie. – fourpastmidnight

+0

Tak, "--save-dev" też by działało, myślę, zaktualizowałem swoją odpowiedź, aby wspomnieć Scenariusz pomoże mi zgadnąć, ale są inne problemy, takie jak utrzymywanie synchronizacji wszystkich wersji podczas aktualizowania zależności lub usuwanie z NPM i JSPM po usunięciu, itp. – Nico

+0

Dobra uwaga - nie otrzymałem wystarczająco daleko w moim procesie myślowym, aby rozważyć aktualizację i usunięcie zależności - ale są to bardzo ważne procesy tworzenia aplikacji, stąd potrzeba bardziej holistycznego podejścia, a'la wsparcie najwyższej klasy z TypeScript: – fourpastmidnight

Powiązane problemy