Node.js 在nodejs进程上执行自定义命令

Node.js 在nodejs进程上执行自定义命令,node.js,Node.js,对于nodejs,我完全是新手 我正在编写一个自定义程序,我需要在其中添加一个手表,例如,我从nodejs.bat文件开始,该文件工作正常,但我一直在想,是否可以从外部控制shell进程中命令的执行 就像我运行shell进程并手动键入“refresh;reload resource_1”一样,它工作正常,但使用nodemon时,我想为它添加一个手表,例如:我编辑src文件夹中的一个文件,我希望nodejs自动在该shell进程中键入(或exexcute)“refresh;reload resou

对于nodejs,我完全是新手

我正在编写一个自定义程序,我需要在其中添加一个手表,例如,我从nodejs.bat文件开始,该文件工作正常,但我一直在想,是否可以从外部控制shell进程中命令的执行

就像我运行shell进程并手动键入“refresh;reload resource_1”一样,它工作正常,但使用nodemon时,我想为它添加一个手表,例如:我编辑src文件夹中的一个文件,我希望nodejs自动在该shell进程中键入(或exexcute)“refresh;reload resource_1”等等。我试过使用exec,但它使用的是已经定义好的命令,比如'kill,dir'等等

我在windows机器上工作


提前感谢。

您可以利用Node.js的内置
子进程


"严格使用",;
//依赖关系
const{exec,sapwn}=require('child_process');
//要运行的命令
//如果要使用PowerShell
//child=spawn(“powershell.exe”[“c:\\temp\\helloworld.ps1]”);
exec('cat*.js缺少_文件| wc-l',(错误,标准输出,标准输出)=>{
//伐木
如果(错误){
错误(`exec error:${error}`);
返回;
}
log(`stdout:${stdout}`);
错误(`stderr:${stderr}`);
});
请参阅此处的官方文件:

您可以写入子进程“
stdin”
!(前提是您在自己的节点脚本中启动了它。)

const{spawn}=require('child_process')
const child=spawn('some_command')//启动您想要与之对话的任何进程
//管道输出,以便您可以看到它(您也可以监听stdout/stderr流)
//并以编程方式捕获其输出)
子.stdout.pipe(process.stdout)
子.stderr.pipe(process.stderr)
//设置输入的编码
child.stdin.setEncoding('utf-8')
//将内容写入流程的stdin!
child.stdin.write('refresh;reload resource_1')
//请注意,只要进程正在运行并且保持'child'变量不变,
//你可以在很久以后继续写“child.stdin”。
进一步阅读:


如果您不是自己启动程序,而是希望从以前开始自动运行一个已经运行的程序,那么它会变得更加棘手,而nodejs并不是实现这一点的最佳工具。您可以使用WinAPI函数,但这是它自己的兔子洞,现在进入它将是浪费时间,除非您真的需要它。

谢谢,也许我做错了,但我尝试了,但没有为我工作。我启动进程shell,将其PID保存在某个地方,然后通过PID和exec(“刷新”)在其上查找进程,但它也不起作用。我应该用你的建议来代替什么//您希望运行exec的命令('cat*.js missing_file | wc-l')提前感谢。@IliaHanev当然,您应该用自己的命令替换'cat*.js missing_file | wc-l'文本以执行。@JustAMartin是的,我这样做了,但它也不起作用。您的操作系统是什么?如果是windows,则
cat
命令肯定无法工作。它是Windows中的
类型
。你必须调整语法以适应Windows的外壳。操作系统是Windows。所以我应该编写exec(“键入refresh;reloadres1”),这样应该可以工作了吗?