web-dev-qa-db-fra.com

Avertissement: PhantomJS non trouvé

J'ai installé nodejs 0.10.15 sur debian 6. À l’aide de npm, j’ai installé:

Sudo npm install grunt-cli -g

J'ai également exécuté npm install dans mon répertoire de test local (téléchargement des dépendances nécessaires dans le répertoire node_modules) qui contient le fichier package.json suivant:

{
  "name": "sample-name",
  "version": "1.4.0",
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-qunit": ">0.0.0",
    "grunt-qunit-istanbul": ">0.0.0"
  }
}

voici le résultat lors de l’installation de 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]
...

Mais quand je lance grunt test à partir du répertoire test, je reçois:

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.

Si j'exécute le script phantomjs installé à l'emplacement spécifié précédent, rien ne se produit, cependant, le code de sortie 127 (indiquant le problème PATH: http://tldp.org/LDP/abs/html/exitcodes.html ). Si je raconte le script phantomjs bash, il ressemble à ceci:

#!/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)
})

Si j'ai bien compris, cela signifie que phantomjs est exécuté à l'intérieur du noeud. Si je commence noeud entrez le chemin var je reçois:

:~$ env node
> var path = require('path')
undefined
> 

(ce que je comprends est le comportement par défaut: node.js affiche "undefined" sur la console )

Des suggestions pour continuer à déboguer ce problème?

12
so12345

Essayez de courir 

npm uninstall phantomjs

puis courir

npm install phantomjs -g

Cela devrait s’assurer que phantom est installé avec la ligne de commande, afin que grunt puisse l’utiliser, et également s’assurer qu’il est installé correctement.

26
Brandon Anzaldi

Essayez npm install grunt-mocha -D

Voir plus de détails sur https://github.com/gruntjs/grunt-lib-phantomjs/issues/22

3
Chevdor

Essayez d’exécuter ce qui suit dans votre terminal:

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