Ich verwende Typescript mit SystemJS zum Laden von Modulen und Gulp für Task Runner in meinem Angular 2-Projekt. Die aktuelle Version von Angular im Projekt ist RC2, aber das Problem ist auch bei RC1 vorhanden. Ich folgte den Schritten von Brandos Antwort here.Wie bündelt man Angular 2 Typescript App mit Gulp und SystemJS?
Nach meiner und Anfangslast der Website SystemJS Bündelung wirft Fehler:
Error: http://localhost:57462/app/app.bundle.js detected as register but didn't execute.
Die Werke Anwendung, aber der Fehler in der Konsole ist definitiv nicht eine gute Sache.
Ich habe meine Konfiguration auf leeren Projekt getestet und das Problem ist wieder da, ich denke, das Problem liegt in der Konfiguration.
Hier ist sie:
Gulpfile
var gulp = require('gulp');
var sourcemaps = require('gulp-sourcemaps');
var concat = require('gulp-concat');
var typescript = require('gulp-typescript');
var jspm = require('gulp-jspm-build');
gulp.task('compile:ts', function() {
return gulp.src(['./appTS/**/*.ts'])
.pipe(sourcemaps.init())
.pipe(typescript({
noEmitOnError: true,
target: 'ES5',
removeComments: false,
experimentalDecorators: true,
emitDecoratorMetadata: true,
module: 'system',
moduleResolution: 'node'
}))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./app/'));
});
gulp.task('copy:vendor', function() {
return gulp.src([
'node_modules/systemjs/dist/system-polyfills.js',
'node_modules/reflect-metadata/Reflect.js',
'node_modules/core-js/client/shim.min.js',
'node_modules/zone.js/dist/zone.min.js',
'node_modules/systemjs/dist/system.js',
'node_modules/rxjs/bundles/Rx.js'
]).pipe(gulp.dest('./assets/vendor/'));
});
gulp.task('bundle:app', ['compile:ts'], function() {
return jspm({
bundleOptions: {
minify: true,
mangle: false
},
bundleSfx: true,
bundles: [
{ src: './app/main.js', dst: 'bundle.js' }
]
})
.pipe(gulp.dest('./app/'));
});
gulp.task('bundle', ['bundle:app', 'copy:vendor'], function() {
return gulp.src([
'./assets/vendor/Reflect.js',
'./assets/vendor/shim.min.js',
'./assets/vendor/zone.min.js',
'./app/bundle.js'])
.pipe(concat('app.bundle.js'))
.pipe(gulp.dest('./app/'))
});
gulp.task('default', ['bundle']);
var packages = {
app: {
format: 'register',
defaultExtension: 'js'
},
"symbol-observable": { main: 'index.js', defaultExtension: 'js' },
"reflect-metadata": { main: 'Reflect.js', defaultExtension: 'js' }
};
var ngPackageNames = ['common',
'compiler',
'core',
'http',
'platform-browser',
'platform-browser-dynamic',
'router',
'router-deprecated',
'upgrade'];
ngPackageNames.forEach(function (element, index, array) {
packages['@angular/' + element] = { main: 'bundles/' + element + '.umd.min.js', defaultExtension: 'js' };
});
System.config({
main: 'dispel.bundle.min',
defaultExtension: 'js',
format: 'register',
packages: packages,
baseURL: "/",
defaultJSExtensions: true,
transpiler: false,
paths: {
"node_modules*": "node_modules*",
"@angular*": "node_modules/@angular/*"
},
map: {
"@angular": "node_modules/@angular",
"symbol-observable": "node_modules/symbol-observable",
"ng2-translate": "node_modules/ng2-translate",
"es6-shim": "node_modules/es6-shim",
"reflect-metadata": "node_modules/reflect-metadata",
"rxjs": "node_modules/rxjs",
"zone.js": "node_modules/zone.js"
}
});
Können Sie eine Repo erstellen wir klonen und Test könnte? – Sasxa
Gibt es auch einen bestimmten Grund, warum Sie das 'system' /' register' Format verwenden? Was passiert, wenn Sie "" module "verwenden:" commonjs "' in TS compier und 'format": "cjs" 'in System config? – Sasxa
Es gibt keinen besonderen Grund dafür.Der Fehler wird nicht mehr von SystemJS ausgelöst, aber es gab einen neuen Fehler: 'crypto.js not found'. Ich habe "" crypto ":" node_modules/crypto-js/index.js "Mapping im System.config -> map-Abschnitt hinzugefügt und alles funktioniert, aber SystemJS macht separate Anfragen für jede crypto-js-Datei (etwa 30). –