process.env.USER不是我在Linux Mint 18.x上所期待的

时间:2018-06-17 01:04:20

标签: node.js linuxmint

我有一个使用dotenv包的简单Node.js测试应用程序。

我有.env个文件

USER=DesiredUser

app.js

require('dotenv/config'); 

console.log(process.env.USER);

然而,当我运行应用程序时,它正在使用我的计算机的登录用户。 有任何想法吗?在我的Windows测试中不会发生。

2 个答案:

答案 0 :(得分:0)

来自the official docs

  

已设置的环境变量会发生什么变化?   我们永远不会修改任何已设置的环境变量。特别是,如果.env文件中的变量与环境中已存在的变量发生冲突,则将跳过该变量。

在这种特殊情况下,它可能也是一个安全问题。在Linux上,您需要sudo成为另一个用户。

答案 1 :(得分:0)

dotenv不会覆盖现有环境(已提及另一个答案)。

可以看出,it checks if properties exist on process.env

正如this question中所述,Windows上的process.env.USERNAMEprocess.env.USER,这就是它的行为方式不同的原因。

如果覆盖是预期的行为,可以冒风险实现:

delete process.env.USER;
require('dotenv/config'); 

虽然这不会让应用程序以另一个用户身份运行。