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」に置き換えると、テキストエディタが期待どおりに表示されます。
誰かがこれが何であるかについてのアイデアを持っていますか?