2016-01-15 7 views
7

Sto provando a configurare un'app di base Angular 2 con TypeScript. Ma io sono bloccato perché SystemJS non sembra fare nulla con l'opzione defaultExtension: 'js'.DefaultExtension non funziona nell'app Angular 2

mio index.html assomiglia a questo:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <base href="/test/"> 
    <meta charset="UTF-8"> 
    <title>Test</title> 

    <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet"> 
    <script src="node_modules/angular2/bundles/angular2-polyfills.js"></script> 
    <script src="node_modules/systemjs/dist/system.src.js"></script> 
    <script src="node_modules/rxjs/bundles/Rx.js"></script> 
    <script src="node_modules/angular2/bundles/angular2.dev.js"></script> 
    <script src="node_modules/angular2/bundles/router.dev.js"></script> 

    <script> 
    System.config({ packages: { app: { format: 'register', defaultExtension: 'js', } } }); 
    System.import('backend/app/boot') 
     .then(null, console.error.bind(console)); 
    </script> 
</head> 
<body> 
    <app>Loading</app> 
</body> 
</html> 

Ma questo allora mi dà il seguente errore:

GET http://localhost:1122/test/backend/app/boot 404 (Not Found) 

ho può aggiungere l'estensione .js al percorso nel comando System.import, così che assomigli a questo:

System.import('backend/app/boot.js') 

Quindi è è in grado di trovare boot.js, ma poi si lamenta che esso non può trovare app.component. Quindi, in sostanza, devo aggiungere un'estensione .js a quella importazione e per ogni altro componente che avrò nella mia applicazione.

Non penso che sia la soluzione per cui devo andare. Quindi, come posso risolvere questo problema System.import? Sembra che stia ignorando defaultExtension: 'js' per qualche motivo.

risposta

8

si sta impostando l'js come l'estensione predefinita per il pacchetto app, ma il codice è in backend/app, non app, rimuovere la cartella backend o fissare il pacchetto di configurazione.

2

Solo provando Angular2 e ha avuto lo stesso problema. Immagino, un'altra opzione potrebbe essere l'utilizzo di baseURL. Es .:

System.config({ 
     baseURL: 'backend/', 
     packages: { 
       app: { 
        format: 'register', 
        defaultExtension: 'js', 
       } 
     } 
}); 

System.import('app/boot') 
     .then(null, console.error.bind(console)); 
1

Ho avuto lo stesso problema, ho trovato la seguente soluzione. Usa la mappa per aggiungere il tuo percorso extra alla tua cartella app come questa

System.config({ 
     packages: { 
      app: { 
       format: 'register', 
       defaultExtension: 'js' 
      } 
     }, 
     map: { 'app': './backend/app' } 
    }); 
    System.import('app/boot');