gulp-jasmine выдает ошибку с systemjs

--- ОБНОВИТЬ ---

Итак, я обновил свою задачу, и теперь у меня есть следующее, проблема в том, что когда она попадает в спецификацию, первая строка следующая

import {Injector, provide} from "angular2/core";

К сожалению, это не ссылка на каталог node_modules/angular2, а скорее на корень проекта!!!

var jasmine = require('gulp-jasmine');
var System = require('systemjs');

gulp.task('newtest', () => {

System.config({
    baseURL: "/",
    transpiler: 'typescript',
    defaultJSExtensions: true,
    path: {
        "node_modules*": "node_modules/*"           
    },
    packages: {
        "app": {
            "defaultExtension": "js"
        }
    },      
    maps:{
        "angular2": "/node_modules/angular2",
    },
});

Promise.all([
    System.import('app/assets/services/config.service.spec'),
]).then(function(){     
    gulp.src(['app/assets/services/config.service.spec'])
        .pipe(jasmine())
}).catch(console.error.bind(console));

});

--- СТАРЫЙ ---

Так что я могу быть новичком в этом деле, но я пытаюсь использовать gulp для сборки, проверки и тестирования моего демо-решения. Приложение использует Angular 2, Gulp, SystemJS, Gulp-tslint и Gulp-Jasmine, однако я не могу заставить Gulp-Jasmine работать без падений. Он жалуется на следующее:

events.js:141
throw er; // Unhandled 'error' event
^
TypeError: Invalid System.register call. Anonymous System.register calls can only be made by modules loaded by SystemJS.import and not via script tags.
at SystemJSNodeLoader. (D:\ng2demo\node_modules\systemjs\dist\system.src.js:2981:17)
at SystemJSNodeLoader. (D:\ng2demo\node_modules\systemjs\dist\system.src.js:3655:29)
at SystemJSNodeLoader. (D:\ng2demo\node_modules\systemjs\dist\system.src.js:4142:33)
at SystemJSNodeLoader.reduceRegister_ (D:\ng2demo\node_modules\systemjs\dist
\system.src.js:4142:33)
at SystemJSNodeLoader.pushRegister_ (D:\ng2demo\node_modules\systemjs\dist\system.src.js:2699:14)
at SystemJSNodeLoader.SystemJSLoader.register (D:\ng2demo\node_modules\syste
mjs\dist\system.src.js:2937:10)
at Object. (D:\ng2demo\app\assets\services\config.service.spec.js
:4:8)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)

Файл JS, который он пытается запустить, представляет собой спецификацию, написанную на TypeScript и транспилированную в JS с помощью gulp-typescript. Итак, верхняя строка файла:

System.register(['angular2/core', 'angular2/http', 'angular2/http/testing',
./config.service'], function(exports_1, context_1) {
//Do Stuff
});

Проблема именно с этой строкой, есть идеи?


person HeavenlyHost    schedule 23.04.2016    source источник
comment
В будущем просто сделайте отступ кода/ошибок четырьмя пробелами (или выделите его и используйте control+k/command+k).   -  person Laurel    schedule 23.04.2016


Ответы (1)


похоже, вам не хватает ' в этой строке:

./config.service'], function(exports_1, context_1) {

должно быть:

System.register(['angular2/core', 'angular2/http', 'angular2/http/testing',
'./config.service'], function(exports_1, context_1) {
//Do Stuff
});
person Jeff Puckett    schedule 23.04.2016
comment
Спасибо, Джефф, это была просто опечатка от моего имени: P в любом случае только что проверил код, и он действительно его содержит. У тебя есть другие идеи ? некоторые люди предлагают использовать commonJS, а не SystemJS в качестве загрузчика модулей, однако команда разработчиков Google использовала SystemJS, поэтому я думал, что Gulp-Jasmine справится с этим. Я имею в виду, что если я запускаю тест npm, он работает, но проблема с gulp. Что-нибудь, что я упускаю? - person HeavenlyHost; 24.04.2016