我在AWS中的Windows实例用户数据中有以下命令 . 我可以看到pm2 env变量已设置但在PowerShell的下一行中没有启动pm2服务器 . 我在系统配置文件下运行pm2而不是任何用户配置文件 .
见下面的代码:
$myvar = "D:\Mycode"
[Environment]::SetEnvironmentVariable("PM2_HOME", "C:\etc\.pm2", "Machine")
& 'C:\Windows\system32\config\systemprofile\AppData\Roaming\npm\pm2.cmd' start $myvar"\app.js" |
Out-File D:\debug.txt -Append
1 回答
您对
[Environment]::SetEnvironmentVariable(...)
的调用不会影响当前的shell环境变量,因此当您调用pm2.cmd
时,PM2_HOME
变量将不存在 .一个简单的修复是在您调用
SetEnvironmentVariable
之后,使用以下命令然后检索该值,并在当前shell中创建该变量:这仅在userdata脚本期间需要,因为所有将来的会话都将具有此环境变量(即,在会话启动时加载环境变量) .
另一种方法是调用
powershell.exe
(或甚至cmd.exe
)的新实例来启动pm2.cmd
- 因为这将创建一个新会话,它将接收新的环境变量 .