TeamCity:PhantomJS还没有在60000毫秒内捕获,杀死

时间:2016-11-02 14:18:40

标签: angularjs phantomjs karma-runner karma-jasmine

我在CI环境中运行测试时遇到问题。使用Node v6.0.0 / npm 3.8.6,配置在MacOS 10.11.6(El Capitan)上运行正常,但在运行带有Node v4.2.2 / npm 2.14.7的Windows的TeamCity 9.1.6代理上,它失败了错误WSGIDaemonProcess radicale user=www-data group=www-data threads=1 WSGIProcessGroup radicale WSGIScriptAlias / /var/www/radicale.wsgi <Directory /var/www/intranet/calendars> WSGIApplicationGroup %{GLOBAL} AllowOverride None Order allow,deny allow from all </Directory> <Location /cal> AuthType basic AuthName "My Calendar" AuthBasicProvider file AuthUserFile /etc/radicale/radpasswd Require user olivers </Location> SSLEngine on SSLCertificateFile /etc/ssl/certs/harrison7sprcert.pem SSLCertificateKeyFile /etc/ssl/private/harrison7sprkey.pem

这是TeamCity上的示例堆栈跟踪:

PhantomJS have not captured in 60000 ms

这是一个package.json的片段:

[08:58:40][exec] 02 11 2016 08:58:41.095:DEBUG [config]: autoWatch set to false, because of singleRun
[08:58:40][exec] 02 11 2016 08:58:41.102:DEBUG [plugin]: Loading plugin karma-jasmine.
[08:58:40][exec] 02 11 2016 08:58:41.107:DEBUG [plugin]: Loading plugin karma-chrome-launcher.
[08:58:40][exec] 02 11 2016 08:58:41.121:DEBUG [plugin]: Loading plugin karma-firefox-launcher.
[08:58:40][exec] 02 11 2016 08:58:41.128:DEBUG [plugin]: Loading plugin karma-phantomjs-launcher.
[08:58:40][exec] 02 11 2016 08:58:41.263:DEBUG [web-server]: Instantiating middleware
[08:58:41][exec] 02 11 2016 08:58:41.595:INFO [karma]: Karma v1.3.0 server started at http://localhost:9877/
[08:58:41][exec] 02 11 2016 08:58:41.596:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency
[08:58:41][exec] 02 11 2016 08:58:41.616:INFO [launcher]: Starting browser PhantomJS
[08:58:41][exec] 02 11 2016 08:58:41.618:DEBUG [temp-dir]: Creating temp dir at E:\TCA\3\temp\buildTmp\karma-47802965
[08:58:41][exec] 02 11 2016 08:58:41.631:DEBUG [launcher]: E:\TCA\3\work\f900f2fe23d6c9b0\Preview\node_modules\phantomjs-prebuilt\lib\phantom\bin\phantomjs E:\TCA\3\temp\buildTmp\karma-47802965/capture.js
[08:59:41][exec] 02 11 2016 08:59:41.621:WARN [launcher]: PhantomJS have not captured in 60000 ms, killing.
[08:59:43][exec] 02 11 2016 08:59:43.624:WARN [launcher]: PhantomJS was not killed in 2000 ms, sending SIGKILL.
[08:59:45][exec] 02 11 2016 08:59:45.627:WARN [launcher]: PhantomJS was not killed by SIGKILL in 2000 ms, continuing.
[08:59:45][exec] 02 11 2016 08:59:45.628:DEBUG [launcher]: Process PhantomJS exited with code -1
[08:59:45][exec] 02 11 2016 08:59:45.629:DEBUG [temp-dir]: Cleaning temp dir E:\TCA\3\temp\buildTmp\karma-47802965
[08:59:45][exec] 02 11 2016 08:59:45.637:DEBUG [launcher]: PhantomJS failed (timeout). Not restarting.
[08:59:45][exec] 02 11 2016 08:59:45.638:DEBUG [karma]: Run complete, exiting.
[08:59:45][exec] 02 11 2016 08:59:45.639:DEBUG [launcher]: Disconnecting all browsers
[08:59:45][exec] Warning: Task "karma:unit" failed.  Use --force to continue.
[08:59:45][exec] 
[08:59:45][exec] Aborted due to warnings.
[08:59:45][exec] npm ERR! Test failed.  See above for more details.

这是karma.conf.js的片段:

"devDependencies": {
    "bower": "latest",
    "grunt": "^1.0.1",
    "grunt-cli": "^1.2.0",
    "grunt-contrib-jshint": "^1.0.0",
    "grunt-contrib-watch": "^1.0.0",
    "grunt-istanbul-coverage": "^0.1.4",
    "grunt-karma": "^2.0.0",
    "karma": "^1.3.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-firefox-launcher": "^1.0.0",
    "karma-jasmine": "^1.0.2",
    "karma-phantomjs-launcher": "^1.0.2",
    "jasmine-core": "^2.5.2",
    "matchdep": "^1.0.1"
},
"scripts": {
    "postinstall": "node ./node_modules/bower/bin/bower install",
    "test": "node ./node_modules/.bin/grunt default"
}

2 个答案:

答案 0 :(得分:3)

问题解决了!在我们的CI环境中,我们没有通过运行npm install来获取节点模块 - 我们在本地压缩node_modules目录并将其添加到源代码中。

在Mac上压缩它并在Windows上进行爆炸并尝试使用这些模块,尤其是phantomjs-prebuilt,这就是它无法捕获的原因。

我从Windows上将其压缩,而且效果非常好。

答案 1 :(得分:1)

我在本地遇到了 PhantomJS have not captured in 60000 ms, killing 问题,经过一些实验后发现它可能是由以下原因引起的:

  1. PhantomJS之间的冲突可从classpath vs phatomjs-prebuilt已下载到项目的node_modules。我刚刚删除了全球可用的那个。
  2. 缺少PHANTOMJS_CDNURL环境(系统)变量,指向maven存储库,请检查where to get PhantomJS