【问题标题】:process.env.USER not what I'm expecting on Linux Mint 18.xprocess.env.USER 不是我在 Linux Mint 18.x 上所期望的
【发布时间】:2018-11-26 07:42:06
【问题描述】:

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

我有.env 文件

USER=DesiredUser

app.js

require('dotenv/config'); 

console.log(process.env.USER);

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

【问题讨论】:

    标签: node.js linux-mint


    【解决方案1】:

    来自the official docs

    已经设置的环境变量会怎样?
    我们永远不会修改任何已经设置好的环境变量。特别是,如果您的 .env 文件中有一个变量与您的环境中已经存在的变量发生冲突,那么该变量将被跳过。

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

    【讨论】:

      【解决方案2】:

      dotenv 不会覆盖现有环境(正如另一个答案已经提到的那样)。

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

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

      如果覆盖是预期行为,您可以自行承担风险:

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

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

      【讨论】:

        猜你喜欢
        • 2016-12-06
        • 1970-01-01
        • 2018-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-15
        相关资源
        最近更新 更多