如何设置 Linux 环境变量,以便 pm2 可以看到 node.js 应用程序的环境变量?

How do I set Linux environment variables so that pm2 can see them for node.js apps?

当我 运行 我的 Ubuntu Linux 服务器上的 nodejs 应用程序使用 node server.js 它工作正常,并输出环境变量的值 $db 使用 process.env.db.

但是,应用程序在 运行ning sudo pm2 start server.js 时中断,将环境变量视为 undefined

我尝试在以下文件中添加变量:

我也重新启动 运行 source ~/.bashrc 以确保变量可用。

我想我已经尝试了这里提到的所有方法,我不知道还能做什么:

请参考本帖https://github.com/Unitech/pm2/issues/204

您的环境变量似乎已被缓存。

请注意,说 source ~/.bashrc 您正在为当前用户加载变量。然而,当你说 sudo ... 你是 运行 用户 root,所以这不会改变。

你可以做的是使用 sudo-E:

sudo -E pm2 start server.js

来自man sudo

-E, --preserve-env
             Indicates to the security policy that the user wishes to reserve their
             existing environment variables.  The security policy may eturn an error
             if the user does not have permission to preserve the environment.