2013-11-22 16 views
6

私が作成しているGruntタスクでいくつかの問題があります。私はnpmのインストールを実行しようとしています。続いてバウアーインストールとその後のハントターゲット(複数のサブプロジェクトのビルドコマンドを起動する)が続きます。ノードJS - 子プロセスのspawn( 'npm install')でENUMエラーが発生しました

私が遭遇している問題はchild_processにあります。で結果(代わりにインストールNPMのLSで)

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); 
     }); 

現在のコード::私は私の単調な作業で次のコマンドを実行する場合、私は、NPMと現在コメントアウトだのspawnコマンドをインストールし、産卵ENOENTエラーが発生します

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 

が、私はへの 'LSを' 変更した場合、私が代わりに ``致命的なエラーが出る 'NPMインストール':すぐENV印刷、次のスポーンENOENT

私はそのディレクトリにchmod 777を試しましたが、これは役に立たないようです。私も試してみました

// var spawnProcess = spawn('npm install', {'cwd': projectPath}); 

// var spawnProcess = spawn('npm install', [], {'cwd': projectPath}); 

Warning: Object # has no method 'slice' Use --force to continue.

で元の結果は、後には、まだENOENTエラーになります。

このENOENTエラーが何であるかについての助けは、おそらく大いに役立ちます。私はグーグルでそれほど成功していませんでした。child process API docs

答えて

7

もう一度child_process.spawnでドキュメントをチェックしてください。最初の引数は実行するだけコマンドであって、第2引数である:

var npm = spawn('npm', ['install'], { cwd: projectPath }); 
+1

完全に働きました。私は一度あなたがそれを提供したか、どれくらい簡単に解決できなかったのか、どれくらい簡単か分かりません。本当にありがとう! – zedd45

+2

将来の参照可能な訪問者のために、http://stackoverflow.com/questions/27688804/how-to-debug-any-node-js-child-process-error-spawn-enoent – laconbass

+0

うーん、これはうまくいかなかった私。まだspawnSyncを取得しているENMENT(はい、私は同期バージョンを使用しています) – ianbeks

関連する問題