Node.js 为生成的子进程写入stdin不起作用

Node.js 为生成的子进程写入stdin不起作用,node.js,Node.js,我正在生成一个java应用程序REPL,用于使用以下命令查询本地数据库: repl = = require('child_process').spawn('java', ['-cp', '...list of libs...', ,{ cwd: '...path to env...', env: process.env, customFds: [-1, -1, -1] }); REPL加载很好,因为我可以在stdout中看到它的输出,但是stdin.write命令无法执行。不过,我可以直接在节

我正在生成一个java应用程序REPL,用于使用以下命令查询本地数据库:

repl = = require('child_process').spawn('java', ['-cp', '...list of libs...', ,{ cwd: '...path to env...', env: process.env, customFds: [-1, -1, -1] });
REPL加载很好,因为我可以在stdout中看到它的输出,但是stdin.write命令无法执行。不过,我可以直接在节点进程本身的控制台窗口中写入它们,这很奇怪,因为我没有这样做。继续。 我已经打印出生成进程的stdin,它看起来像这样:

{ _handle:
   { writeQueueSize: 0,
     socket: [Circular],
     onread: [Function: onread] },
  _pendingWriteReqs: 0,
  _flags: 0,
  _connectQueueSize: 0,
  destroyed: false,
  bytesRead: 0,
  bytesWritten: 0,
  allowHalfOpen: undefined,
  writable: true,
  readable: false }
似乎没有定义“fd”,而且.readable返回false。如何解决这个问题? 这都是在windows计算机节点v0.6.6上完成的
感谢

文档特别说明了这一点,因为他们无法让它在Windows上工作


虽然-1的数组意味着不应该使用它,但由于整个选项已被弃用,请尝试完全删除它,看看这是否解决了您的问题。

文档明确指出,这是因为他们无法让它在Windows上工作


虽然-1的数组意味着不应该使用它,但由于整个选项已被弃用,请尝试将其完全删除,看看这是否解决了您的问题。

现在尝试,但没有效果。问题是,如果我选择加载其他进程,例如cmd.exe,它就会工作。就好像子进程正在接管node.js stdin输入,而不是创建自己的输入,这似乎很奇怪。为了将Java程序作为Linux守护进程运行,请将所有输出重定向到文件,以便断开与它的连接。您是否尝试过运行cmd.exe并将java作为流程中类似包装器的第一个参数传递?现在尝试一下,没有效果。问题是,如果我选择加载其他进程,例如cmd.exe,它就会工作。就好像子进程正在接管node.js stdin输入,而不是创建自己的输入,这似乎很奇怪。为了将Java程序作为Linux守护进程运行,请将所有输出重定向到文件,以便断开与它的连接。您是否尝试过运行cmd.exe并将java作为流程中类似包装器的第一个参数传递?