Node.js spawn vlc子进程在express中不工作
我正在使用node.js和express为我的家庭媒体中心创建一个控制器,可以通过浏览器进行操作 我在生成VLC进程时遇到了很多麻烦,但奇怪的是,只有在从节点提示符执行时它才能工作,而在从文件运行时却不能 以下是我测试的内容: 在节点命令行/解释器中: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从命令行运
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
,现在一切似乎都正常了。谢谢你的帮助,你的榜样真的帮助我在这个问题上磨练了。:)