我无法让 pm2 在 Windows 上启动我的应用程序。我正在运行 Windows Server 2012 R2 Standard 和
pm2 2.4.2
。
我有一个 JSON 格式的 pm2 进程文件,我用它来启动我的所有应用程序。
c:\pm2\process.json
{
"apps": [
{
"name" : "my-app",
"script" : "c:\\node\\myapp\index.js"
}
]
}
我有一个使用 JSON 文件的批处理文件:
c:\pm2\pm2-startup.bat
@echo off
set HOMEDRIVE=C:
set PM2_HOME=C:\etc\.pm2
setx /M PM2_HOME C:\etc\.pm2
cd C:\pm2 & pm2 start process.json
我计划了一个 Windows 任务来运行批处理文件:
如果我手动运行批处理文件(双击它),它就可以工作。如果我手动运行计划任务(右键单击,运行),它就可以工作。
当我重新启动服务器并检查计划任务时,它已经运行,没有错误,但是应用程序没有运行。执行
pm2 list
显示表格中没有应用程序。
我不想使用pm2-windows-service因为我不想将pm2作为服务运行(尝试过,但很不稳定)。
我也不想使用pm2-windows-startup,因为它似乎不适用于pm2进程文件,它只是试图记住之前运行的内容。
我确实想在启动时使用一个普通的批处理文件。
我的批处理文件做错了什么..?为什么定时任务运行正常,但是pm2列表却是空的..?
我知道这是一个老问题,但我会留下答案以供将来搜索。
您可以将 .bat 文件的快捷方式放在 Windows 启动文件夹中。
假设 PM2 cmd 在路径中,您的 bat 文件可能如下所示。
@echo off
SET PM2_HOME=C:\Users\pstart\.pm2
pm2 start C:\path\to\run.js
这将启动 PM2 并运行该程序。现在,您只需将 bat 文件保存到某个位置,然后单击“开始”按钮 ->“运行”->“shell:startup”,然后将其粘贴到其中,即可在 Windows 启动文件夹中创建快捷方式。
在“操作:启动程序”中,您应该捕获批处理文件的输出以查看发生了什么。
添加到“添加参数”操作。
类似的东西:
> C:\temp\pm2_batch_log.txt 2>&1
此外,还可以使用Windows服务进行配置。 这是我的工作示例。