26

我的 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

为什么我在运行 karma test 时会得到这个 - karma start my.conf.js

4

11 回答 11

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
于 2015-02-08T23:40:29.540 回答
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

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

于 2015-04-13T15:51:53.737 回答
12

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

这对我有用:

$ echo $PHANTOMJS_BIN

/usr/local/lib/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/lib/phantom/bin/phantomjs

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

$ grunt test

之后一切正常。

于 2015-06-02T16:40:54.497 回答
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
于 2016-02-04T19:28:36.160 回答
4

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

于 2016-04-22T18:54:17.210 回答
2

karma.conf.js有这条线:process.env.PHANTOMJS_BIN = 'node_modules/karma-phantomjs-launcher/node_modules/.bin/phantomjs';在顶部。我才意识到!我评论了它,它有效

于 2016-03-05T00:24:47.083 回答
2

我有时会遇到同样的问题。我有一个gruntfile.jspackage.json明确添加phantomjs-prebuilt为依赖项的地方。但是我的 CI Server 有时可以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']);
于 2016-05-25T09:52:47.737 回答
2

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

于 2018-05-20T01:43:53.140 回答
1

有同样的问题,上面都做了,没有结果只是从全局node_modules和项目本地删除了'karma-phantomjs-launcher'文件夹,称为'npm install',一切都很好!

于 2015-06-10T15:38:37.693 回答
1

遇到了这样的问题。我所做的是全局安装 phantomjs npm install -g phantomjs。然后转到karma-phantomjs-launcher模块文件夹并打开index.js文件。然后我去了phantomJSExePath函数并注释掉了之前的内容(不确定这样做是否安全)。然后我放置

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

使我免于重新输入临时导出。

于 2015-06-15T14:48:06.507 回答
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

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

于 2016-10-19T00:26:53.587 回答