【问题标题】:PM2 command not running under PowerShell scriptPM2 命令未在 PowerShell 脚本下运行
【发布时间】:2018-07-13 05:45:46
【问题描述】:

我在 AWS 的 Windows 实例用户数据中有以下命令。我可以看到 pm2 环境变量已设置,但在 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

【问题讨论】:

标签: node.js powershell amazon-ec2 pm2


【解决方案1】:

您对[Environment]::SetEnvironmentVariable(...) 的调用不会影响当前的shell 环境变量,因此当您调用pm2.cmdPM2_HOME 变量将不存在。

一个简单的修复方法是在您调用 SetEnvironmentVariable 之后,使用以下命令检索该值,并在当前 shell 中创建该变量:

$env:PM2_HOME = [System.Environment]::GetEnvironmentVariable("PM2_HOME","Machine");

这仅在 userdata 脚本期间是必需的,因为所有未来的会话都将具有此环境变量(即在会话开始时加载环境变量)。

另一种方法是调用powershell.exe(甚至cmd.exe)的新实例来启动pm2.cmd - 因为这将创建一个新会话,该会话将接收新的环境变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多