karma-ng-html2js-препроцессор не работает gulp + angular + karma + ng-html2js
Я не могу заставить препроцессор karma-ng-html2js работать на внешний шаблон.
Пакетный файл Json:
.....
"gulp-karma": "*",
"karma-coverage": "*",
"karma-jasmine": "*",
"karma-ng-html2js-preprocessor": "*",
"karma-phantomjs-launcher": "*",
.....
Файл конфигурации кармы:
config.set({
browsers: [
....
],
frameworks: [
'jasmine'
],
plugins: [
'karma-jasmine',
'karma-phantomjs-launcher',
'karma-ng-html2js-preprocessor'
],
preprocessors: {
'app/**/*.html': 'ng-html2js'
},
ngHtml2JsPreprocessor: {
stripPrefix: 'app/'
}
});
Файлы определены в файле Build и переданы в gulp-karma. Вот определенные файлы:
config = { test: {
configFile: '.../karma.conf.js',
depends: [
.......
],
files: [
"app/**/*.js",
'app/**/*.html'
]
}
}
Загрузка шаблона в моей спецификации директивы, как показано ниже:
beforeEach(module('app'));
beforeEach(module('app/tem/mytemp.html'));
Я получаю ошибку ниже:
Error: [$injector:modulerr] Failed to instantiate module app/tem/mytemp.html due to:
Error: [$injector:nomod] Module 'app/tem/mytemp.html' is not available! You either misspelled the
В karma de bug.html html файлы загружаются в вывод тега ссылки:
<script type="text/javascript" src="/absoluteC:.../app/tem/comp/mydirective.js"></script>
<link href="/absoluteC:..../app/tem/mytemp.html" rel="import">
<script type="text/javascript">
window.__karma__.loaded();
Я что-то пропустил? Как мне отладить и двигаться дальше от этой проблемы?
2 ответа
Вот как я решил точно такую же проблему:
1) npm install karma-ng-html2js-preprocessor --save-dev
(ты уже сделал это)
2) В karma.config.js:
// ....
preprocessors: {
'**/*.html': ['ng-html2js']
},
// ....
ngHtml2JsPreprocessor: {
stripPrefix: 'app/', // <-- change as needed for the project
// include beforeEach(module('templates')) in unit tests
moduleName: 'templates'
},
plugins : [
'karma-phantomjs-launcher',
'karma-jasmine',
'karma-ng-html2js-preprocessor'
]
3) Поскольку глоток-карма перезаписывает files
свойство karma.conf.js, измените конфигурацию задачи gulp для ваших тестовых настроек (у меня было два: один test
который запускает тесты один раз и другой называется tdd
для постоянного тестирования) примерно так:
gulp.task('test', function() {
var bowerDeps = ...
var testFiles = bowerDeps.js.concat([
'app/scripts/**/*.js',
'test/unit/**/*.js',
'app/**/*.html' // <-- This is what you need to add to load the .html files
]);
return gulp.src(testFiles)
.pipe($.karma({
configFile: 'test/karma.conf.js',
action: 'run'
}))
....
});
Надеюсь, это кому-нибудь поможет.
Я новичок в этом, и я ищу новую проблему, но думаю, что я немного дальше, чем вы (я также понимаю, что этот квест немного стар).
Я сделал следующее изменение в разделе ngHtml2JsPreprocessor файла конфигурации Karma.
ngHtml2JsPreprocessor: {
stripPrefix: 'app/',
// ADDED THIS: the name of the Angular module to create
moduleName: "my.templates"
}
Затем в моем тесте я ссылался на это имя модуля вместо имени HTML.
beforeEach(module('my.templates'));
Надеюсь, это поможет, даже если уже поздно. Или что кто-то находит информацию полезной, когда они ищут.