Обнаружено исключение Phantomjs Fatal для Windows
У меня проблемы с запуском тестов кармы.
Я использую плагин запуска phantomjs, и когда он пытается запустить, я вижу следующее:
[09:27:02] Starting 'karma-tests'...
DEPRECATED: use your own version of lodash, this will go away in karma@2.0
DEPRECATED: use your own version of lodash, this will go away in karma@2.0
28 01 2017 09:27:04.817:INFO [karma]: Karma v1.4.0 server started at http://0.0.0.0:9876/
28 01 2017 09:27:04.817:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency
28 01 2017 09:27:04.817:INFO [launcher]: Starting browser PhantomJS
28 01 2017 09:27:07.882:INFO [PhantomJS 2.1.1 (Windows 8 0.0.0)]: Connected on socket VwHY_WyYXMEj3RvZAAAA with id 284
68634
28 01 2017 09:27:08.436:ERROR [phantomjs.launcher]: Fatal Windows exception, code 0xc0000005.
PhantomJS has crashed. Please read the bug reporting guide at
<http://phantomjs.org/bug-reporting.html> and file a bug report.
28 01 2017 09:27:08.471:ERROR [launcher]: PhantomJS crashed.
28 01 2017 09:27:08.475:INFO [launcher]: Trying to start PhantomJS again (1/2).
28 01 2017 09:27:10.457:WARN [PhantomJS 2.1.1 (Windows 8 0.0.0)]: Disconnected (1 times)
PhantomJS 2.1.1 (Windows 8 0.0.0) ERROR
Disconnectedundefined
[09:27:10] 'karma-tests' errored after 7.9 s
[09:27:10] Error: 1
at formatError (C:\Users\asus\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:169:10)
at Gulp.<anonymous> (C:\Users\asus\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:195:15)
at emitOne (events.js:101:20)
at Gulp.emit (events.js:188:7)
at Gulp.Orchestrator._emitTaskDone (C:\Users\asus\Documents\Github\interACT\node_modules\orchestrator\index.js:264
:8)
at C:\Users\asus\Documents\Github\interACT\node_modules\orchestrator\index.js:275:23
at finish (C:\Users\asus\Documents\Github\interACT\node_modules\orchestrator\lib\runTask.js:21:8)
at cb (C:\Users\asus\Documents\Github\interACT\node_modules\orchestrator\lib\runTask.js:29:3)
at removeAllListeners (C:\Users\asus\Documents\Github\interACT\node_modules\karma\lib\server.js:380:7)
at Server.<anonymous> (C:\Users\asus\Documents\Github\interACT\node_modules\karma\lib\server.js:391:9)
at Server.g (events.js:291:16)
at emitNone (events.js:91:20)
at Server.emit (events.js:185:7)
at emitCloseNT (net.js:1555:8)
at _combinedTickCallback (internal/process/next_tick.js:71:11)
at process._tickDomainCallback (internal/process/next_tick.js:122:9)
Я использую последние версии запуска karma и phantomjs со следующими записями в моем package.json:
"karma": "^1.4.0",
"karma-phantomjs-launcher": "^1.0.2"
Плюс у меня Phantomjs 2.1.1 установлен глобально
Природа ошибки, кажется, предполагает, что это связано с Windows, я работаю на 64-битной платформе Windows 10.
Проект, который я запускаю, фактически установлен на некоторых других машинах, представляющих собой смесь Windows 7, Windows 10 и Linux. Я видел эту проблему на других машинах win 10, остальные платформы кажутся нормальными. До недавнего времени (последние пару недель примерно) я не видел этой проблемы на win 10, поэтому мне интересно, вызвало ли какое-то обновление Windows непредвиденный побочный эффект.
Я случайно изменил номер порта в моем файле конфигурации karma, и ему удалось запустить тесты, но при дальнейшем запуске он снова не удался с той же ошибкой. Смена порта снова не имела значения.
Мой конфиг кармы выглядит следующим образом:
module.exports = function(config) {
config.set({
logLevel : config.LOG_INFO,
colors: true,
browsers: ['PhantomJS'],
singleRun: true,
port: 9876,
autoWatch: false,
basePath: '../',
reporters: ['progress', 'coverage'],
coverageReporter: {
dir : 'test/coverage/',
reporters: [{
type: 'lcovonly',
subdir: '.',
file: 'karma-coverage.dat'
}, {
type : 'json',
subdir: '.',
file : 'karma-results.json'
}]
},
frameworks: ['jasmine'],
exclude: ['../dist/client/assets/scripts/angular_app.js'],
files: [
'dist/client/assets/scripts/jquery.js',
'dist/client/assets/scripts/bootstrap.js',
'dist/client/assets/scripts/bower_libs.js',
'dist/client/assets/scripts/d3.min.js',
'dist/client/assets/scripts/main.js',
'test/mocks/mocks.config.js',
'test/mocks/**/*.mock.js',
'src/client/app/**/*.module.js',
'src/client/app/**/!(*spec).js',
'src/client/app/**/*.spec.js'
],
preprocessors: {
'src/client/app/**/!(*spec).js': ['coverage']
}
});
};
Кто-нибудь сталкивался с этой проблемой, и если да, то вам удалось найти решение?
Дайте мне знать, если вам потребуется дополнительная информация.
Спасибо
1 ответ
В конце концов я нашел решение, используя бета-версию 2.5.0, которую можно взять отсюда и заменив exe в папке библиотеки фантома, которая поставляется с модулем, встроенным в phantomjs.
Так что для меня я должен был придерживаться здесь:
PROJECT_ROOT\node_modules\phantomjs-prebuilt\lib\phantom\bin
Это сделало свое дело, больше нет фатальных исключений! Не похоже, что 2.5 будет выпущен в ближайшее время, хотя - https://github.com/ariya/phantomjs/milestones
Используйте на свой страх и риск!