Node.js spawn vlc子进程在express中不工作

Node.js spawn vlc子进程在express中不工作,node.js,vlc,child-process,Node.js,Vlc,Child Process,我正在使用node.js和express为我的家庭媒体中心创建一个控制器,可以通过浏览器进行操作 我在生成VLC进程时遇到了很多麻烦,但奇怪的是,只有在从节点提示符执行时它才能工作,而在从文件运行时却不能 以下是我测试的内容: 在节点命令行/解释器中:require('child_process')。spawn('vlc') 这正如我所期望的,我可以看到vlc窗口打开并在屏幕上保持 如果我获取完全相同的代码行并将其放在另一个文件(比如test.js)中,然后使用node test.js从命令行运

我正在使用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”将导致文本编辑器完全按照预期显示


有人知道这可能是什么吗?

这只是一种预感,但我打赌你在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代码的相关部分。

我刚刚将您发布的代码复制到一个.js文件中,并使用node:
sudo node.js
运行它。我马上得到出口代码1。我想知道是否有一件事我没有考虑进去?尽管如此,gedit和其他程序似乎运行良好。我不知道我遗漏了什么。出于好奇,我在整个目录中递归地尝试了
chmod 777
,现在一切似乎都正常了。谢谢你的帮助,你的榜样真的帮助我在这个问题上磨练了。:)