Tôi đang sử dụng Typecript với SystemJS để tải mô-đun và Gulp cho tác vụ nhiệm vụ trong dự án Angular 2 của tôi. Phiên bản hiện tại của Angular trong dự án là RC2 nhưng vấn đề là hiện tại cũng với RC1. Tôi đã làm theo các bước của câu trả lời của brando here.Làm thế nào để kết hợp ứng dụng Angular 2 Typescript sử dụng Gulp và SystemJS?
Sau bundling ứng dụng của tôi và tải ban đầu của SystemJS website ném lỗi:
Error: http://localhost:57462/app/app.bundle.js detected as register but didn't execute.
Các công trình ứng dụng nhưng lỗi trong giao diện điều khiển chắc chắn không phải là một điều tốt.
Tôi đã thử nghiệm cấu hình của mình trên dự án trống và sự cố lại xuất hiện nên tôi nghĩ sự cố có trong cấu hình.
Ở đây là:
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"
}
});
Bạn có thể tạo ra một repo chúng ta có thể sao chép và kiểm tra? – Sasxa
Ngoài ra, bất kỳ lý do cụ thể nào bạn đang sử dụng định dạng 'system' /' register'? Điều gì sẽ xảy ra nếu bạn sử dụng '" module ":" commonjs "' trong TS compier và 'format": "cjs" 'trong System config? – Sasxa
Không có lý do cụ thể cho điều đó.Lỗi này không còn được SystemJS ném nữa nhưng có lỗi mới: 'crypto.js not found'. Tôi đã thêm '" crypto ":" node_modules/crypto-js/index.js "' ánh xạ trong System.config -> phần bản đồ và mọi thứ hoạt động nhưng SystemJS đưa ra các yêu cầu riêng biệt cho mỗi một tệp tin crypto-js (khoảng 30). –