Karma.conf.js не существует
Я просто переустановил node с нуля. Я также установил yeoman
, generator-angular
и karma
.
После создания проекта с yo angular
я могу успешно grunt serve
. Однако всякий раз, когда я пытаюсь grunt test
, возникает следующая ошибка:
karma.conf.js does not exist
Однако karma.conf.js
действительно существует в сгенерированном тестовом каталоге. Почему это произойдет?
Ответы
Ответ 1
Gruntfile.js ссылается на karma.conf.js в корневом каталоге.
Генератор Angular помещает его в тестовый каталог, поэтому вам нужно обновить Gruntfile.js
// Test settings
karma: {
unit: {
configFile: 'test/karma.conf.js',
singleRun: true
}
}
Также возникает проблема при запуске теста grunt с этим сгенерированным karma.conf.js. Он скажет
test/karma.conf.js:63
colors: true,
^^^^^^
ERROR [config]: Invalid config file!
SyntaxError: Unexpected identifier
Причина: запятая отсутствует после "singleRun: false".
Ответ 2
У меня также была эта проблема, но я использовал CoffeeScript. Оказалось, что CoffeeScript для karma.conf.js не создавался. karma.conf.coffee был помещен правильно в тестовую папку, но он не компилировался. Так что в моем файле grunt (под задачей кофе) я заменил это...
test: {
files: [{
expand: true,
cwd: 'test/spec',
src: '{,*/}*.coffee',
dest: '.tmp/spec',
ext: '.js'
}]
}
С этим...
test: {
files: [{
expand: true,
cwd: 'test/spec',
src: '{,*/}*.coffee',
dest: '.tmp/spec',
ext: '.js'
},
{
expand: true,
cwd: 'test',
src: 'karma.conf.coffee',
dest: 'test',
ext: '.conf.js'
}]
}
Все, что я сделал, это убедиться, что karma.conf.coffee скомпилирован в тестовом каталоге.
Это сработало, но я все еще получал ошибки, потому что в karma.conf.coffee у некоторых файлов были неправильные расширения ('cs' вместо 'coffee'), для этих 3 строк в частности.
'app/scripts/**/*.cs'
'test/mock/**/*.cs'
'test/spec/**/*.cs'
Я только что изменил расширения на coffeescript (и удалил папку mock, поскольку я не использовал его).
'app/scripts/**/*.coffee'
'test/spec/**/*.coffee'
после этого были выполнены сборки и тест. Я новичок в Йомен, поэтому я не уверен, что этого можно было бы легко избежать, но это то, что я должен был сделать, чтобы все работало.
Ответ 3
В моем случае я даже не нашел karma.conf.js. Однако я понял, что вы делаете
grunt --force
вы сможете получить больше информации, и вы можете получить то, что происходит внутри
Running "karma:unit" (karma) task
08 09 2015 13:16:33.928:WARN [plugin]: Cannot find plugin "karma-phantomjs-launcher".
Did you forget to install it ?
npm install karma-phantomjs-launcher --save-dev
08 09 2015 13:16:33.939:WARN [plugin]: Cannot find plugin "karma-jasmine".
Did you forget to install it ?
npm install karma-jasmine --save-dev
Warning: No provider for "framework:jasmine"! (Resolving: framework:jasmine) Used --force, continuing.
Наконец, я смог понять, что я пропустил.
Надеюсь на эту помощь.