[md]我在本地Windows机器上运行一个Node.js应用程序。我需要打开一个应用程序,比如说记事本。 这是我的代码: ``` javascript exec(`"${execPath}" ${args}`, { windowsHide: true }, (error, stdout, stderr) => { if (error) { console.log(error); } }); ``` 如果我打开PowerShell并运行: node app.js 它会如预期那样工作。但如果我使用PM2启动应用程序,它就不会工作。查看运行中的进程,我发现应用程序进程已经开始,但应用程序的图形界面没有显示。 我尝试创建了一个批处理文件和PowerShell脚本文件: javascript spawn('cmd.exe', ['/c', batFilePath, execPath, args]); 但我总是得到相同的结果。 可能的问题和解决方案: 权限问题:确保PM2以管理员权限运行,因为某些应用程序可能需要管理员权限才能显示其GUI。 环境变量:PM2可能没有正确设置环境变量。确保execPath和args在PM2环境中被正确解析。 PM2配置:检查PM2的配置,确保没有设置阻止应用程序GUI显示的选项。 日志记录:增加更详细的日志记录,以确定问题发生的具体位置。 PM2日志:查看PM2的日志输出,可能会有关于为什么GUI没有显示的线索。 依赖项:确保所有必要的依赖项都已正确安装,并且PM2使用的Node.js版本与开发环境中使用的版本一致。 调试:尝试在PM2启动的应用程序中使用调试器,看看是否有任何错误或异常。 PM2版本:确保你使用的PM2版本与你的Node.js应用程序兼容。[/md] |