启动node.js服务器时如何访问命令提示符?

问题描述 投票:0回答:1

我已经设置了一个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文件已经运行。 (正常运行时,桌面上保存了一个文档)我做错了吗?

谢谢。

javascript python node.js
1个回答
0
投票

听起来您想从节点进程中生成python进程。您可能要使用Node的child_process.spawn()而不是child_process.exec()。节点的child_process.exec()

  1. 异步,和
  2. 缓冲区stdoutstderr,因此在子进程退出时调用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)?

© www.soinside.com 2019 - 2024. All rights reserved.