我有一个使用dotenv
包的简单Node.js测试应用程序。
我有.env
个文件
USER=DesiredUser
app.js
require('dotenv/config');
console.log(process.env.USER);
然而,当我运行应用程序时,它正在使用我的计算机的登录用户。 有任何想法吗?在我的Windows测试中不会发生。
答案 0 :(得分:0)
已设置的环境变量会发生什么变化? 我们永远不会修改任何已设置的环境变量。特别是,如果.env文件中的变量与环境中已存在的变量发生冲突,则将跳过该变量。
在这种特殊情况下,它可能也是一个安全问题。在Linux上,您需要sudo
成为另一个用户。
答案 1 :(得分:0)
dotenv
不会覆盖现有环境(已提及另一个答案)。
可以看出,it checks if properties exist on process.env
。
正如this question中所述,Windows上的process.env.USERNAME
和process.env.USER
,这就是它的行为方式不同的原因。
如果覆盖是预期的行为,可以冒风险实现:
delete process.env.USER;
require('dotenv/config');
虽然这不会让应用程序以另一个用户身份运行。