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?
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