2016-10-06 4 views
0

настоящего время я использую systemJs относительного пути в моем компоненте с этим синтаксисом в моем .ts файлах:Как совместить SystemJs относительного пути и тест с использованием кармы/жасмина

declare var __moduleName:string; 

@Component({ 
    moduleId: __moduleName, 
    ... 
}) 
... 

Все работает отлично до тех пор пока я хочу импортировать этот компонент в тесте. Я получил это следующее, не многословную ошибку от кармы:

Chrome 52.0.2743 (Linux 0.0.0) ERROR 
{ 
    "originalErr": {} 
} 

Если я удалить строку:

moduleId: __moduleName, 

из компонента transcrypted .js файла, весь мой тест работает хорошо.

Если у кого-то есть идея, как объединить этот синтаксис относительных путей systemjs и инструменты кармы/жасмина, было бы очень желанно.

+0

Вы получаете ошибку при выполнении TSC с __moduleName? – Supamiu

+0

У меня есть следующая ошибка во всем моем заявлении на импорт: ошибка TS1219: Экспериментальная поддержка декораторов - это функция, которая может быть изменена в будущей версии. Установите параметр «experimentalDecorators», чтобы удалить это предупреждение. Но это не связано с синтаксисом __moduleName, я думаю ... – Raphayol

+1

Что делать, если вы используете 'module.id' и просто' declare var module' –

ответ

2

На данный момент наилучшая практика Angular2 заключается в использовании commonjs для вашей записи moduleId и компиляции вашего приложения, используя commonjs.

tsconfig.json:

{ 
    "compilerOptions": { 
    "module": "commonjs", 
    ... 
    ... 
    } 
} 

Использование commonjs компиляции будет хорошо работать с кармой/жасмин и angular2 Aswell.

Вы просто должны заменить

@Component({ 
    moduleId: __moduleName, 
    ... 
}) 
... 

с

@Component({ 
    moduleId: module.id, 
    ... 
}) 
... 

и удалить

declare var __moduleName:string; 
+0

Замена «модуля»: «система» на «модуль»: «commonjs» в my tsconfig.json разбивает все приложение, я получаю следующее: ReferenceError: require не определен – Raphayol

+0

Вы должны удалить все .js-файлы из ваших .ts-файлов и снова запустить tsc. – Supamiu

+0

Мне пришлось переписать несколько вещей в файле конфигурации systemjs, чтобы он работал! Теперь все в порядке, спасибо за вашу помощь @Supamiu – Raphayol