2015-12-25 13 views
12

Sto utilizzando JSPM per creare un flusso di lavoro di base Angular 2. Funziona (vedi https://github.com/simonh1000/Angular2-beta-jspm), ma non sto diventando intellisense poiché VS Code non vede i moduli jspm angolari, come si può vedere nell'immagine. Cosa dovrei fare?Il codice VS non può usare/jspm_packages; systemjs non può vedere file angular2 ts

Intellisense can't see jspm modules

E qui è la mia tsconfig.json compreso il suggerimento da Eric:

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

posso fare qualche progresso nel Codice VS utilizzando questo tipo di istruzione import

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

Ma quindi ricevo un errore quando eseguo l'effetto:

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

Ecco un estratto da 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

Aggiungi 'moduleResolution: node' nel vostro tsconfig.json sotto' compilerOptions'. –

+0

potrebbe essere la tua versione VSCode è vecchia. anche io di fronte allo stesso errore. e una soluzione è come menzionato da @EricMartinez –

+0

@EricMartinez ho provato la soluzione sopra menzionata ma non riesci a far emergere il problema da un'altra soluzione? –

risposta

6

questo è previsto in questo momento perché il compilatore dattiloscritto non sa come a "trovare" pacchetti JSPM.

VSCode si basa sul compilatore TypeScript e il compilatore sa solo cercare i moduli tramite i pacchetti NPM (ad esempio, guarda all'interno di node_modules/ - questo è ciò che fa "moduleResolution": "node").

Poiché non è stato installato Angular 2 tramite NPM, non si trova nella cartella node_modules/ e il compilatore non lo trova. Si dovrebbe ottenere lo stesso errore se si stesse eseguendo il compilatore della riga di comando tsc.

soluzioni sono beingdiscussed e sembra dattiloscritto @ prossimo ha un certo supporto di base per manually specify un elenco di paths per cercare i moduli (non ho ancora testato). Non sembra ideale, poiché dovrai mantenere manualmente questo elenco ogni volta che la dipendenza JSPM cambia.

Un'alternativa è installare Angular 2 via NPM oltre a JSPM (ad esempio npm install angular2 --save o --save-dev) ma duplica la dipendenza e richiede anche la manutenzione manuale quando si cambia.

Così è la vita a bordo sanguinamento ...

+0

Sarebbe possibile 'npm installare angular2 --save-dev', invece, per questo scopo? Ma comunque, sono d'accordo, non è l'ideale. Un pensiero che ho dovuto minimizzare la necessità di sincronizzazione è la creazione di uno script npm (o script jspm?) Che essenzialmente installa 'npm $ {packageName} --save-dev && jspm install npm: $ {packageName}' (comunque tu farebbe la sostituzione delle variabili in questo scenario, in questo modo, quando eseguirai questo script, lo farò entrambi nello stesso momento. – fourpastmidnight

+0

Sì, anche "--save-dev" funzionerebbe, penso, aggiorno la mia risposta per menzionarlo Lo script potrebbe aiutare a indovinare, ma ci sono altri problemi come mantenere tutte le versioni sincronizzate quando si aggiorna una dipendenza, o rimuovere sia da NPM che da JSPM quando ne rimuovi una, ecc. – Nico

+0

Buon punto - non ha ottenuto abbastanza avanti nel mio processo di pensiero per considerare l'aggiornamento e la rimozione delle dipendenze - ma questi sono processi di workflow di sviluppo molto importanti, quindi la necessità di un approccio più olistico, un supporto di prima classe da TypeScript – fourpastmidnight

Problemi correlati