gruntjs - Karma + PhantomJS + 无法访问互联网

标签 gruntjs npm phantomjs offline karma-runner

我需要在无法访问互联网的持续集成服务器上使用 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/

相关文章:

javascript - 在生产环境中调试 Uglified javascript

node.js - vuejs - 来自 chokidar 的错误(C :\): Error: EBUSY: resource busy or locked, lstat 'C:\hiberfil.sys'

java - 打开的文件太多(Selenium + PhantomJSDriver)

css - 我可以配置一个 grint-contrib-less 任务来编译成并行结构吗?

linux - 如何针对目录中的多个文件执行 Pig 脚本

javascript - 是否可以在 Chrome 扩展中使用 ES6?

npm - 如何将 angular-cli 1.7.3 降级到 angular-cli 1.6.8

node.js - 在 Express js 中无需密码即可检查 Active Directory

python - 将 elem.send_keys 用于页面中的句柄 "Infinite Scroll"。在 Python 中使用 Selenium PhantomJS

javascript - 如何设置 cucumber 环境变量