1

Cloud Foundry の node.js で子プロセスを実行しようとした人はいますか?

以下のコードをローカルで正常に実行しています。

var port = (process.env.VMC_APP_PORT || 3000),
    host = (process.env.VCAP_APP_HOST || 'localhost'),
    http = require('http');


 var childProcess = require('child_process'),
         phantom = require('phantomjs'),
     ls;

 http.createServer(function(req, res) {

    ls = childProcess.exec('phantomjs -h', function (error, stdout, stderr) {
    if (error) {
     console.log(error.stack);
     console.log('Error code: '+error.code);
     console.log('Signal received: '+error.signal);
    }
    console.log('Child Process STDOUT: '+stdout);
    console.log('Child Process STDERR: '+stderr);
    });

    ls.on('exit', function (code) {
        console.log('Child process exited with exit code '+code);
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.write('Working...');
      res.end();
    });

 }).listen(port, host);

しかしvmc pushcloudfoundry.comでは、エラーが発生しましたvmc logs

Reading logs/stdout.log... OK
Child process exited with exit code 127
Error: Command failed: /bin/sh: phantomjs: not found

    at ChildProcess.exithandler (child_process.js:536:15)
    at ChildProcess.EventEmitter.emit (events.js:91:17)
    at maybeClose (child_process.js:634:16)
    at Socket.ChildProcess.spawn.stdin (child_process.js:805:11)
    at Socket.EventEmitter.emit (events.js:88:17)
    at Socket._destroy.destroyed (net.js:358:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)
Error code: 127
Signal received: null
Child Process STDOUT:
Child Process STDERR: /bin/sh: phantomjs: not found

Child process exited with exit code 127
Error: Command failed: /bin/sh: phantomjs: not found

    at ChildProcess.exithandler (child_process.js:536:15)
    at ChildProcess.EventEmitter.emit (events.js:91:17)
    at maybeClose (child_process.js:634:16)
    at Socket.ChildProcess.spawn.stdin (child_process.js:805:11)
    at Socket.EventEmitter.emit (events.js:88:17)
    at Socket._destroy.destroyed (net.js:358:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)
Error code: 127
Signal received: null
Child Process STDOUT:
Child Process STDERR: /bin/sh: phantomjs: not found

次に、以下のファイルも追加しましたpackage.jsonが、同じエラーが発生しました:

{
  "name" : "mytestchildprocesses",
  "version" : "0.1.0",
  "dependencies" : {
    "phantomjs" : "1.8.1-3",
    "child_process" : "0.x.x",
    "http" : "0.0.0"
  }
}

または、他の誰かが node.js に phantomjs を配置する作業を試みました: https://github.com/sgentle/phantomjs-node。しかし、このオプションは私のローカル マシンでも機能しません (Windows では phantomjs.cmd を呼び出すことができませんでした)。

皆さんが助けてくれれば、むしろ cloudfoundry.com で子プロセスを実行する方法を見つけました。

本当に感謝します!!

4

3 に答える 3

1

Phantom.js には「phamtom」というバイナリが必要なようです。node-fibers パッケージ ( https://github.com/laverdet/node-fibers ) をご覧になることをお勧めします。このライブラリはネイティブ バイナリに依存していないため、正常に動作するはずです。

于 2013-02-26T00:23:22.223 に答える
0

だから私はあなたのコードをローカルで試したところ問題がありました。

そのpackage.jsonnpminstallを使用すると、npmリポジトリに存在しないchild_processに関するエラーが発生します。その行を削除すると、npmのインストールが完了します。

次に、パス上でphantomjsが実行可能でないというエラーが発生します。

phantomjsをグローバルにインストールすると、localhost:3000に到達したときに、ノードコンソールでphantomjsへの誤った引数に関するエラーが表示されます。

関連するノードモジュールのリモートインストールを有効にするには有効なpackage.jsonが必ず必要になるため、Cloud Foundryにアップロードされた問題があり、グローバルインストールに依存している場合も問題が発生するので、驚くことではありません。

于 2013-02-24T23:20:26.127 に答える