Sto riscontrando qualche difficoltà con un'attività Grunt che sto creando. Sto cercando di eseguire l'installazione di npm, seguita da bower install, seguita da una destinazione hub grunt (per attivare un comando build per più sottoprogetti).Node JS - figlio_processo spawn ('npm install') nell'attività Grunt risulta nell'errore ENOENT
Il problema che sto incontrando si trova in child_process. Ottengo l'errore ENOENT deporre le uova se corro i seguenti comandi nel mio compito grugnito, con il NPM installazione comando spawn che è attualmente commentata:
var path = require('path'),
projectPath = path.resolve(process.cwd(), this.data.activity);
grunt.log.debug('project path computed as: ', projectPath);
process.chdir(projectPath);
console.log('current dir is: ', process.cwd());
console.log('EVN is: ', process.env);
var spawnProcess = spawn('ls');
// var spawnProcess = spawn('npm install');
spawnProcess.stdout.on('data', function (data) {
console.log('' + data);
});
spawnProcess.stderr.on('data', function(data) {
console.log('something went wrong installing deps for ' + path + '. Error: ', data);
});
spawnProcess.on('close', function (exitCode) {
console.log('ls has finished with Exit Code: ' + exitCode);
});
il codice corrente (con ls al posto di NPM installa) si traduce in:
running "install:projects" (install) task[D] Task source: /Users/zedd45/proj/Gruntfile.js
Verifying property install.projects exists in config...OK
File: [no files]
[D] project path computed as: /Users/zedd45/proj/activity/web/client
current dir is: /Users/zedd45/proj/activity/web/client
EVN (abbreviated) is: {
TERM_PROGRAM: 'iTerm.app',
SHELL: '/bin/bash',
PWD: '/Users/zedd45/proj',
...
OLDPWD: '/Users/zedd45/proj/activity/web/client',
_: '/usr/local/bin/grunt' }
GruntFile.js
bower.json
package.json
this_is_the_directory_you_are_looking_for.txt
ls has finished with Exit Code: 0
ma se cambio 'ls' a 'NPM install' ricevo invece `` Fatal error: uova ENOENT
subito dopo la stampa ENV.
Ho provato chmod 777 per quella directory, che non sembra essere d'aiuto.
ho anche provato:
// var spawnProcess = spawn('npm install', {'cwd': projectPath});
e
// var spawnProcess = spawn('npm install', [], {'cwd': projectPath});
I risultati precedenti in
Warning: Object # has no method 'slice' Use --force to continue.
tardo risultati ancora nell'errore ENOENT.
Qualsiasi aiuto con esattamente ciò che questo errore ENOENT è probabilmente sarebbe di grande aiuto; Non ho avuto molto successo con Google su Google né con il child process API docs
Che ha funzionato perfettamente. Non riesco a credere a quanto sia facile/ovvia la soluzione una volta che l'hai fornita, o quanto sia difficile evitarlo. Grazie mille! – zedd45
per riferimento futuro di possibili visitatori, http://stackoverflow.com/questions/27688804/how-to-debug-any-node-js-child-process-error-spawn-enoent – laconbass
Hmm, questo non ha funzionato per me. Ancora ottenere spawnSync npm ENOENT (sì sto usando la versione di sincronizzazione) – ianbeks