Error: spawn Unknown system errno 203
在用node写代码的时候发现这个错误,google之无解,现在解决,发于此。
事件起因为一个全局模块通过子进程(chind_process)调用另一个全局模块的命令,这个错误就是在命令行通过全局命令调用的时候报的
Error: spawn Unknown system errno 203
但是父模块直接通过node app.js 这样的形式是可以成功的。
本身代码大概是这样:
先通过全局命令 aa(bin/aa) 启动了父模块的入口,然后在其中通过了chind_process.fork出了父模块的代码,接着在这个代码里再通过chind_process.exec 执行了全局全局命令 bb(bin/bb) ,然后在bb的代码里又调用了子模块的入口,再fork出了子模块的代码。。蛋疼啊。
之前一直以为是父模块exec的问题,但是最后猜测是在父进程找不到子模块的全局命令导致的,验证之后发现果然如此,应该就是环境丢失的问题。
于是就在父进程中 chind_process.fork 的时候把环境merge进去了,问题解决。
代码大概是这样
var child = cp.fork(path.resolve(__dirname, '../server/app.js'), p, { env : util.merge({ 'NODE_ENV': 'production' // 'NODE_ENV': 'development' }, process.env) });