1

「app.js」と「child.js」という名前のフォルダーの下に2つのファイルがあります。ノードは Windows OS で実行されています。app.js ファイル:

;(function() {
    var http = require("http"),
    child_process = require("child_process"),
    exec = child_process.exec;

    http.createServer(function(request, response) {
        response.writeHead(200, {"content-type": "text/plain"});
        exec('node child.js', {env: {number: 1234}}, function(error, stdout, stderror) {
            if(error) throw error;
            console.log(stdout);
            console.log(stderror);
        });
        response.write("Hello world!!!");
        response.end();
    }).listen(8000);
    console.log("The server has started listening to the port: 8000");
})();  

child.js ファイル:

;(function() {
    var envVar = process.env.envVar;
    console.log("Type of envVar: " + typeof envVar);
    console.log("The value of envVar is: " + parseInt(envVar, 10));
})();

「exec」メソッドを介して外部コマンドを実行しようとしています。
しかし、私が実行すると:

node app.js  

次のエラーが表示されます。

Command failed: 'node' is not recognized as an internal or external command, operable program or batch file.  

私はここで何をしているのですか?

4

1 に答える 1

1

execしたがって、コマンドが必要な場合は、これを試してください:

var http = require("http"),
    child_process = require("child_process"),
    exec = child_process.exec;
    http.createServer(function(request, response) {
        response.writeHead(200, {"content-type": "text/plain"});
        exec( '"' + process.execPath + '" child.js', {env: {number: 1234}}, function(error, stdout, stderror) {
            if(error) throw error;
            console.log(stdout);
            console.log(stderror);
        });
        response.write("Hello world!!!");
        response.end();
    }).listen(8000);
    console.log("The server has started listening to the port: 8000");

process.execPathは node.exe のフル パスが"含まれています。ディレクトリ名にはProgram files.

子プロセスは同じです。オプションで設定したため、に変更process.env.envVarしました。process.env.numberexec

var envVar = process.env.number;
    console.log("Type of envVar: " + typeof envVar);
    console.log("The value of envVar is: " + parseInt(envVar, 10));
于 2013-03-22T10:05:11.343 に答える