我需要在无法访问互联网的持续集成服务器上使用 PhantomJS 运行 Karma 测试。每个构建都从运行 npm install --no-registry
开始,然后运行 grunt
Grunt Karma 配置为单次运行 (singleRun: true
)
除了 PhantomJS 之外,一切都运行良好。即使 phantomjs 包位于 npm-cache 中,它也会尝试直接从 bitbucket.org 下载实际的二进制文件(在我的例子中为 .exe),并且由于没有 inet 访问而明显失败。
我尝试全局预安装 PhantomJS 包(npm install -g phantomjs
)。现在二进制文件已在离线模式下解析,测试运行通过并通过,一切看起来都很好,但是... Karma 测试套件现在永远不会结束(大概是由于 PhantomJS 永远不会退出),直到我按下 Ctrl+C。 (只有当我使用 npm install -g ...
显式全局安装 PhantomJS 包时才会发生这种情况。如果我不这样做并让它从 < em>BitBucket 自动运行良好)。
两种情况下 PhantomJS 的版本是相同的,我仔细检查过。
我尝试了不同版本的 PhantomJS(1.9.7、1.9.6、1.9.2)和 Karma(0.11、0.10)——没有区别。
这是我的package.json:
"devDependencies": {
"grunt": "~0.4",
"karma": "~0.10",
"grunt-karma": "~0.6"
}
如果我运行带有“-g”安装了 PhantomJS 的 Karma,我会看到以下结果:
> npm install -g phantomjs
Done. Phantomjs binary available at .....
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4d3d252c23392220273e0d7c6374637a607c" rel="noreferrer noopener nofollow">[email protected]</a> C:\Users\.....\npm\node_modules\phantomjs
> karma start --single-run
INFO [karma]: Karma v0.10.9 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.7 (Windows 7)]: Connected on socket JjD-wPAWrUeuz1NBTw02
LOG: 'JQMIGRATE: Logging is active'
PhantomJS 1.9.7 (Windows 7): Executed 60 of 60 SUCCESS (0.362 secs / 0.204 secs)
WARN [launcher]: PhantomJS was not killed in 2000 ms, sending SIGKILL.
_
(并挂起...在 Ctrl+C 继续构建后)
我不明白为什么会发生这种情况。
问题
- 它与使用“-g”安装幻影软件包有什么关系?
- 配置无法访问互联网的环境以使用 PhantomJS 运行 Karma 测试的正确方法是什么?
谢谢!
最佳答案
根据PhantomJS NPM package documentation您可以在运行 npm install
时将 PHANTOMJS_CDNURL
环境变量设置为指向不同的(本地)HTTP 端点。
PHANTOMJS_CDNURL=http://some.server.here/downloads npm install phantomjs
默认值为https://bitbucket.org/ariya/phantomjs/downloads .
此外,如果你将 PhantomJS 放在你的路径上,它应该尝试使用它。
关于gruntjs - Karma + PhantomJS + 无法访问互联网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21480436/