您的平台上没有PhantomJS浏览器的二进制文件。请设置" PHANTOMJS_BIN" env变量

时间:2015-02-05 04:26:31

标签: phantomjs karma-runner mocha-phantomjs karma-mocha karma-coverage

我的package.json看起来像这样..

"karma-phantomjs-launcher": "^0.1.4",
"karma-safari-launcher": "^0.1.1",
"karma-sinon-chai": "~0.2.0",
"karma-spec-reporter": "~0.0.16",
"mocha": "~1.20.1"

我的npm版本是2.2.0

当我进行业力测试时,我会得到这个 - 业力开始my.conf.js

11 个答案:

答案 0 :(得分:19)

这似乎与phantom js runner和phantom js版本有关。

https://github.com/karma-runner/karma-phantomjs-launcher/issues/31

我如何解决问题..

   //install 
   npm install -g karma-phantomjs-launcher

   //temporary path.. set the path
   export PHANTOMJS_BIN=/usr/local/lib/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/lib/phantom/bin/phantomjs

   karma start my.conf.js

答案 1 :(得分:16)

我也遇到了旧版本节点的问题。如果您不想对此环境变量进行硬编码,则更新节点版本将解决该问题。只需执行以下操作(OSX说明):

npm uninstall -g phantomjs
npm cache clean -f
brew upgrade nodejs
rm -rf node_modules
npm install -g YOUR_GLOBAL_DEPENDENCIES
npm install

编辑:更新说明以确保没有全局幻像依赖

答案 2 :(得分:11)

我遇到了同样的问题。修复方法是手动设置PHANTOMJS_BIN变量以指向正确的phantomjs路径。不知怎的,业力发射器试图查看由PHANTOMJS_BIN设置的错误路径。

这对我有用:

$ echo $PHANTOMJS_BIN
  

的/ usr /本地/ LIB / node_modules /果报phantomjs-发射/ node_modules / phantomjs / LIB /幻象/ bin中/ phantomjs

$ export PHANTOMJS_BIN=/usr/local/lib/node_modules/phantomjs/lib/phantom/bin/phantomjs

$ grunt test

之后一切都很好。

答案 3 :(得分:4)

我用karma-phantomjs-launcher@1.0.0来解决这个问题,我也安装了phantomjs@2.1.3。

原来,phantomjs已被弃用,取而代之的是phantomjs-prebuilt。

卸载这两个软件包并重新安装phantomjs -prebuilt修复了karma-phantomjs-launcher的问题:

npm -g remove phantomjs phantomjs-prebuilt
npm -g install phantomjs-prebuilt

答案 4 :(得分:4)

我删除项目下的所有node_modules文件夹并运行" npm install"。这确实解决了我的问题。

答案 5 :(得分:2)

我的karma.conf.js有这一行:process.env.PHANTOMJS_BIN = 'node_modules/karma-phantomjs-launcher/node_modules/.bin/phantomjs';位于顶部。我才意识到这一点!我对此进行了评论,并且有效。

答案 6 :(得分:2)

我有时会遇到同样的问题。我有一个gruntfile.js,我有package.json,我明确地将phantomjs-prebuilt添加为依赖项。但我的CI服务器有时可以顺利运行grunt karma,但有时无法声明No binary for PhantomJS browser on your platform. Please, set “PHANTOMJS_BIN” env variable

所以我添加grunt task以确保在测试运行之前设置了PHANTOMJS_BIN变量,然后解决了烦人的问题。

grunt.registerTask('ensurePhantomJsPath', function () {
    process.env.PHANTOMJS_BIN = './node_modules/phantomjs-prebuilt/bin/phantomjs';
    console.log(process.env.PHANTOMJS_BIN);
});

所以最后Gruntfile.js看起来像这样:

grunt.registerTask('ensurePhantomJsPath', function () {
    process.env.PHANTOMJS_BIN = './node_modules/phantomjs-prebuilt/bin/phantomjs';
    console.log(process.env.PHANTOMJS_BIN);
});

grunt.registerTask('test', ['ensurePhantomJsPath', 'karma']);

答案 7 :(得分:2)

我在OSX上解决了这个问题:使用sudo删除并创建文件karma.config.js

答案 8 :(得分:1)

有同样的问题,上面都做了,没有结果 刚从全局node_modules中删除'karma-phantomjs-launcher'文件夹并将项目本地化, 叫'npm install',一切都很好!

答案 9 :(得分:1)

Ran into a problem like this one. What I did was install the phantomjs globally npm install -g phantomjs. Then went to the karma-phantomjs-launcher module folder and opened index.js file. Then I went to the phantomJSExePath function and commented out the prior contents(not sure if it is safe to do what I did). Then I placed

return 'C://Users/user/AppData/Roaming/npm/node_modules/phantomjs/lib/phantom/phantomjs.exe';

Saved me from retyping the temporary export.

答案 10 :(得分:1)

运行以下命令:

npm remove phantomjs -g
npm remove phantomjs
npm install phantomjs

完成此安装后:

您将收到如下信息:

Linking to global install at /usr/local/lib/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs

复制此路径并运行:

export PHANTOMJS_BIN=/usr/local/lib/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs

基本上发生的事情是:业力试图启动浏览器但无法找到它的垃圾箱。 将路径导出到正确的路径后,它就会运行。