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?
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.
Essayez npm install grunt-mocha -D
Voir plus de détails sur https://github.com/gruntjs/grunt-lib-phantomjs/issues/22
Essayez d’exécuter ce qui suit dans votre terminal:
npm install [email protected] --ignore-scripts