Node.js 警告:找不到PhantomJS

Node.js 警告:找不到PhantomJS,node.js,debian,phantomjs,Node.js,Debian,Phantomjs,我已经在debian 6上安装了nodejs 0.10.15。使用npm,我安装了: sudo npm install grunt-cli -g 我还在本地测试目录(将必要的依赖项下载到node_modules目录)中执行了npm install,其中包含以下package.json文件: { "name": "sample-name", "version": "1.4.0", "devDependencies": { "grunt": "~0.4.1", "gru

我已经在debian 6上安装了nodejs 0.10.15。使用npm,我安装了:

sudo npm install grunt-cli -g
我还在本地测试目录(将必要的依赖项下载到node_modules目录)中执行了npm install,其中包含以下package.json文件:

{
  "name": "sample-name",
  "version": "1.4.0",
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-qunit": ">0.0.0",
    "grunt-qunit-istanbul": ">0.0.0"
  }
}
以下是安装phantomjs时的输出:

...
Writing location.js file
Done. Phantomjs binary available at /home/myuser/Test/node_modules/grunt-contrib-qunit/node_modules/grunt-lib-phantomjs/node_modules/phantomjs/lib/phantom/bin/phantomjs
Done. Phantomjs binary available at /home/myuser/Test/node_modules/grunt-qunit-istanbul/node_modules/grunt-lib-phantomjs-istanbul/node_modules/phantomjs/lib/phantom/bin/phantomjs
grunt@0.4.1 node_modules/grunt
├── which@1.0.5
...
但是当我从test dir运行grunt test时,我得到:

Running PhantomJS...ERROR
>> In order for this task to work properly, PhantomJS must be installed locally
>> via NPM. If you're seeing this message, generally that means the NPM install
>> has failed. Please submit an issue providing as much detail as possible at:
>> https://github.com/gruntjs/grunt-lib-phantomjs/issues
Warning: PhantomJS not found. Use --force to continue.
如果我运行安装在前面指定位置的phantomjs脚本,则不会发生任何情况,但会得到退出代码127(指示问题路径:)。如果我对phantomjs bash脚本进行cat,它会如下所示:

#!/usr/bin/env node

var path = require('path')
var spawn = require('child_process').spawn

var binPath = require(path.join(__dirname, '..', 'lib', 'phantomjs')).path

var args = process.argv.slice(2)

// For Node 0.6 compatibility, pipe the streams manually, instead of using
// `{ stdio: 'inherit' }`.
var cp = spawn(binPath, args)
cp.stdout.pipe(process.stdout)
cp.stderr.pipe(process.stderr)
cp.on('exit', process.exit)

process.on('SIGTERM', function() {
  cp.kill('SIGTERM')
  process.exit(1)
})
据我所知,这意味着phantomjs是在节点内部执行的。如果我启动节点,请输入我得到的路径变量:

:~$ env node
> var path = require('path')
undefined
> 
(我理解为默认行为:)

有进一步调试此问题的建议吗?

请尝试运行

npm卸载phantomjs

然后跑

npm安装phantomjs-g

这应该确保phantom与命令行一起安装,以便grunt可以使用它,还应该确保它安装干净。

试试看
npm安装grunt mocha-D


有关详细信息,请参见

尝试在终端中运行以下命令:

npm install phantomjs-prebuilt@2.1.14 --ignore-scripts

您的项目文件夹层次结构是什么?phantomjs在此层次结构中的位置是什么?测试位于此处:/home/myuser/Test/而phantomjs位于上述目标(运行npm安装的输出)中,应该从何处执行?我得到:module.js:340 throw err;^错误:从运行时在Function.module.\u resolveFilename(module.js:338:15)处找不到模块'/home/myuser/Test/install'terminal@jserup它应该从grunt所在的同一目录执行,该目录应该与项目的顶级目录一致。在任何地方都应该有一个
node\u modules
文件夹,还有你的
package.json
。你不是说“npm卸载phantomjs”和“npm安装phantomjs-g”而不是“node”?使用npm,我可以在目录的根目录中卸载并重新安装它,但当我运行“grunt测试”时,仍然会遇到相同的错误:警告:找不到PhantomJS。使用--force继续。@jserup谢谢你的提醒!显然我需要更多的咖啡。嗯,从debian 6升级到7后,问题消失了。