我已经设置了一个node.js服务器,并希望在启动时将其发送到命令提示符(因为当服务器已经在运行时,我无法弄清楚该怎么做)。
我是否从server.js文件执行此操作?代码看起来像什么?
我目前有此参数,当我通常自己访问Windows命令提示符时,该参数将起作用:
C:\ Users \ path \ python.exe C:\ Users \ path \ test.py
Server.js:
const exec= require("child_process").exec;
const pythonProcess =
exec("C:/Users/myPath/python.exe",
["C:/Users/myPath/test.py"]);
一切都会编译,然后服务器启动,但是没有证据表明python文件已经运行。 (正常运行时,桌面上保存了一个文档)我做错了吗?
谢谢。
听起来您想从节点进程中生成python进程。您可能要使用Node的child_process.spawn()
而不是child_process.exec()
。节点的child_process.exec()
为
stdout
和stderr
,因此在子进程退出时调用exec()
上的回调之前,您将看不到它们的任何输出...并且由于您没有给它回调,您将永远不会看到它。尝试这样的事情:
const childProcess = require('child_process') ;
const python = '.../python.exe' ;
const argv = [
'.../test.py',
] ;
const child = childProcess.spawn( python, argv, {
detached: false,
stdio: [
'inherit', // inherit STDIN from the parent process
'inherit', // inherit STDOUT from the parent process
'inherit', // inherit STDERR from the parent process
],
shell: false,
}) ;
child.on('error', ( err ) => {
console.log(`${python}: ${err.stack}`) ;
}) ;
child.on('exit', (code, signal) => {
console.log(`${python}: exited with exit code ${code}, signal '${signal}'`) ;
}) ;
但是,如果您要在此处执行的只是启动python程序...为什么不通过Shell脚本(在Windows上为“批处理”文件(*.cmd
)文件或Powershell脚本(*.ps
)?