1

NodeJsスポーンNODE_ENV=production node serverのようなまたはそれcd ~/app/cms; npm testを使ってコマンドを実行したい

最初はで達成することができます

process.env.NODE_ENV = 'production'
start = spawn 'node', ['server'], process.env

しかし、どうすれば2番目を達成できますか?

更新:誰かが同様の問題を抱えている場合に備えて、これが私のコーヒースクリプトの例です:

testCode = ->
    testCore = spawn 'npm', ['test']
    testCore.stderr.on 'data', (data) -> console.log() process.stderr.write data.toString()
    testCore.stdout.on 'data', (data) -> print data.toString()
    testCore.on 'exit', ->
        path = require 'path'
        process.chdir path.join(__dirname, "app", "linkParser")
        testModule = spawn 'npm', ['test']
        testModule.stderr.on 'data', (data) -> process.stderr.write data.toString()
        testModule.stdout.on 'data', (data) -> print data.toString()
4

2 に答える 2

1
path = require "path"
process.chdir path.join(process.env.HOME, "app", "cms")
spawn "npm", "test"

http://nodejs.org/docs/latest/api/all.html#all_process_chdir_directory

于 2012-12-07T14:04:07.657 に答える
1

子プロセスから呼び出しようとしたときにENOENTエラーが発生しました。cd

@PeterLyonsの回答は役に立ちました。spawnに関するドキュメントをさらに読んだ後、親プロセスの作業ディレクトリをクリーンに保つために、次のことを行うことにしました。

Coffeescript:

spawn "npm", "test",
  cwd: path.join(process.env.HOME, "app", "cms")

JavaScript:

spawn("npm", "test", { cwd: path.join(process.env.HOME, "app", "cms") });

経験上、文字列だけを渡すこともできることがわかりました。

Coffeescript:

spawn "npm", "test", path.join(process.env.HOME, "app", "cms")

JavaScript:

spawn("npm", "test", path.join(process.env.HOME, "app", "cms"));

詳細については、 spawnドキュメントを確認してください。

于 2013-06-23T16:29:30.810 に答える