1

node.jsとexpressを使用して、ブラウザーで操作できるホームメディアセンター用のコントローラーを作成しています。

VLCプロセスを生成するのに多くの問題がありますが、奇妙なことに、ファイルから実行するときではなく、ノードプロンプトから実行するときにのみ機能します。

これが私がテストしたものです:

ノードのコマンドライン/インタープリター:require('child_process').spawn('vlc'); これは期待どおりに機能します。vlcウィンドウが開いて画面に表示されたままになっているのがわかります。

まったく同じコード行を別のファイル(たとえばtest.js)に配置し、コマンドラインから実行してnode test.jsも何も起こりません。数秒後に子プロセスオブジェクトをログアウトすると、次のようになります。

{ _closesNeeded: 3,
  _closesGot: 3,
  signalCode: null,
  exitCode: 1,
  killed: false,
  _internal: null,
  pid: 11837,
  stdin:
   { _handle: null,
     _pendingWriteReqs: 0,
     _flags: 0,
     _connectQueueSize: 0,
     destroyed: true,
     bytesRead: 0,
     bytesWritten: 0,
     allowHalfOpen: undefined,
     writable: false,
     readable: false,
     _connecting: false,
     _connectQueue: null,
     _idleNext: null,
     _idlePrev: null },
  stdout:
   { _handle: null,
     _pendingWriteReqs: 0,
     _flags: 1,
     _connectQueueSize: 0,
     destroyed: true,
     bytesRead: 0,
     bytesWritten: 0,
     allowHalfOpen: undefined,
     writable: false,
     readable: false,
     _events: { close: [Function] },
     _connecting: false,
     _connectQueue: null,
     _idleNext: null,
     _idlePrev: null },
  stderr:
   { _handle: null,
     _pendingWriteReqs: 0,
     _flags: 1,
     _connectQueueSize: 0,
     destroyed: true,
     bytesRead: 215,
     bytesWritten: 0,
     allowHalfOpen: undefined,
     writable: false,
     readable: false,
     _events: { close: [Function] },
     _connecting: false,
     _connectQueue: null,
     _idleNext: null,
     _idlePrev: null } }

これについて特に奇妙なのは、同じ方法で他のプログラムを起動でき、それが機能することです。たとえば、「vlc」を「gedit」に置き換えると、テキストエディタが期待どおりに表示されます。

誰かがこれが何であるかについてのアイデアを持っていますか?

4

1 に答える 1

2

これは単なる予感ですが、いわば VLC プロセスが「実行」される前に、テストを途中で終了しているに違いありません。

次のように実行します。

var spawn = require('child_process').spawn;
var vlc = spawn('vlc');
vlc.on('exit', function(code){
  console.log('Exit code: ' + code); 
  //EXIT TEST HERE
});

スポーンのドキュメント。

編集: 「test.js」を見て、テストを実行していると思いました。Express コードの関連部分を投稿します。

于 2012-07-20T16:10:53.663 に答える