web-dev-qa-db-ja.com

警告:PhantomJSが見つかりません

私はdebian 6にnodejs 0.10.15をインストールしました。npmを使用してインストールしました:

Sudo npm install grunt-cli -g

次のpackage.jsonファイルを含むローカルテストディレクトリ(必要な依存関係をnode_modulesディレクトリにダウンロード)でnpmインストールも実行しました。

{
  "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
[email protected] node_modules/grunt
├── [email protected]
...

しかし、テストディレクトリから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が表示されます(問題のパスを示す: http://tldp.org/LDP/abs/html/exitcodes.html )。 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
> 

(私が理解しているのはデフォルトの動作です: node.jsはコンソールに「未定義」を表示します

この問題をさらにデバッグするための提案はありますか?

13
so12345

実行してみてください

npm uninstall phantomjs

その後、実行中

npm install phantomjs -g

これにより、ファントムがコマンドラインでインストールされていることを確認して、Gruntがファントムを使用できるようにし、またファントムが正常にインストールされていることを確認する必要があります。

28
Brandon Anzaldi

npm install grunt-mocha -D

詳細は https://github.com/gruntjs/grunt-lib-phantomjs/issues/22 をご覧ください

3
Chevdor

ターミナルで次を実行してみてください。

npm install [email protected] --ignore-scripts
2
jack