2016-05-28 5 views
0

Ich verwende systemjs-builder zusammen mit gulp, um alle kompilierten JS-Dateien zu einer zu bündeln. Dies funktioniert einwandfrei, bis ich versuche, Komponenten/Dienste von Angular Material 2 zu verwenden. die import {MdIcon} from '@angular2-material/icon' am Anfang der Datei zu haben, ist kein Problem, aber sobald ich MdIcon oder andere Materialkomponente oder eine Dienstleistung zu den directives oder providers Arrays hinzufügen, erhalte ich einen Fehler während des Build-Prozesses buildStatic wie:systemjs-builder buildStatic schlägt bei der Verwendung von Angular 2 fehl.

{ [Error: Error on fetch for node_modules/@angular2-material/icon/icon.js at file:///c:/websites/learn/angular2/node_modules/@angular2-material/icon/icon.js 
    Loading app//app/my-app.component.js 
    Loading app//main.js 
    ENOENT, open 'c:\websites\learn\angular2\node_modules\@angular2-material\icon\usr\local\google\home\jelbourn\material2\tmp\broccoli_type_script_compiler-input_base_path-IydvmmBU.tmp\0\components\icon\icon.js.map'] 
    originalErr: 
    { [Error: ENOENT, open 'c:\websites\learn\angular2\node_modules\@angular2-material\icon\usr\local\google\home\jelbourn\material2\tmp\broccoli_type_script_compiler-input_base_path-IydvmmBU.tmp\0\components\icon\icon.js.map'] 
    cause: 
     { [Error: ENOENT, open 'c:\websites\learn\angular2\node_modules\@angular2-material\icon\usr\local\google\home\jelbourn\material2\tmp\broccoli_type_script_compiler-input_base_path-IydvmmBU.tmp\0\components\icon\icon.js.map'] 
     errno: -4058, 
     code: 'ENOENT', 
     path: 'c:\\websites\\learn\\angular2\\node_modules\\@angular2-material\\icon\\usr\\local\\google\\home\\jelbourn\\material2\\tmp\\broccoli_type_script_compiler-input_base_path-IydvmmBU.tmp\\0\\components\\icon\\icon.js.map' }, 
    isOperational: true, 
    errno: -4058, 
    code: 'ENOENT', 
    path: 'c:\\websites\\learn\\angular2\\node_modules\\@angular2-material\\icon\\usr\\local\\google\\home\\jelbourn\\material2\\tmp\\broccoli_type_script_compiler-input_base_path-IydvmmBU.tmp\\0\\components\\icon\\icon.js.map' } } 

Es scheint, dass die Routine versucht, icon.js.map von der falschen Stelle zu laden. Anstelle des Verzeichnisses c:\websites\learn\angular2\node_modules\@angular2-material\icon\, es sucht nach c:\websites\learn\angular2\node_modules\@angular2-material\icon\usr\local\google\home\jelbourn\material2\tmp\broccoli_type_script_compiler-input_base_path-IydvmmBU.tmp\0\components\icon\

Ich bin sowohl Material, Gulp und SystemJS Bauer so nicht sicher, ob ich bin, wo für das Problem der Suche zu beginnen. Wie ich bereits erwähnt habe, funktioniert alles gut, wenn ich kein Angular 2 Material verwende.

Die relevanten Teile meiner gulpfile.js:

gulp.task('build-ts', function() { 
    return gulp.src(appDev + '**/*.ts') 
     .pipe(sourcemaps.init()) 
     .pipe(typescript(tsProject)) 
     .pipe(sourcemaps.write()) 
     //.pipe(jsuglify()) 
     .pipe(gulp.dest(appProd)); 
}); 

gulp.task('bundle',['build-ts'], function() { 
    var builder = new Builder('', './systemjs.config.js'); 

    return builder 
     .buildStatic(appProd + '/main.js', appProd + '/bundle.js', { minify: true, sourceMaps: true}) 
     .then(function() { 
      console.log('Build complete'); 
     }) 
     .catch(function(err) { 
      console.log('Build error'); 
      console.log(err); 
     }); 
}); 

Irgendwelche Ideen?

+0

Problem scheint mit Angular 2 Material wie https://github.com/angular/material2/issues/541 zu sein. Am unteren Rand von '@ angular2-material \ icon \ icon.js' befindet sich eine ungültige' sourceMappingURL'-Referenz. Wenn ich die Referenz repariere, geht der Build-Prozess noch etwas weiter, bevor eine andere fehlerhafte Referenz in einer anderen Datei ausfällt. Die schlechten Zeilen beginnen alle mit '// # sourceMappingURL =' in vielen Dateien im @ angular2-material-Ordner. Hat jemand eine Idee, wie man sie alle automatisch streift? Ich bin in Windows 7 – BeetleJuice

Antwort

0

Die Frage scheint eine Kombination von zwei Dinge zu sein: in seinen Dateien

  1. Angular-Material 2 alpha 5 hat eine falsche Quelle Karte Links; Da systemjs-builder versucht, diese Links aufzulösen, kommt es zu Problemen. https://github.com/angular/material2/issues/541

  2. Die Option in Systemjs-Builder, Quellkarten zu ignorieren, scheint nicht effektiv zu funktionieren. https://github.com/systemjs/builder/issues/610

einstweilen Ich habe systemjs-builder 0.15.16 als Behelfslösung herabgestuft; Diese Version versucht nicht, die fehlerhaften Links aufzulösen.