【问题标题】:How do I setup the dotenv file in Node.js?如何在 Node.js 中设置 dotenv 文件?
【发布时间】:2015-01-14 09:52:56
【问题描述】:

我正在尝试使用 dotenv NPM 包,但它不适合我。我有一个文件config/config.js,内容如下:

'use strict';
    
var dotenv = require('dotenv');
dotenv.load();
console.log('config');

我的应用程序文件夹的根目录中有另一个文件.env。我还有一个环境变量TWILIO_ACCOUNT_SID

这是我尝试在某个函数中使用环境变量时经历的过程:

$ node
> require('./config/config.js');
config
{}
> process.env.TWILIO_ACCOUNT_SID
undefined

我在 .env 文件中定义了 TWILIO_ACCOUNT_SID,但是当我尝试在控制台中输出该值时,我收到一条错误消息,指出该变量未定义。

我将非常感谢在解决此问题时提供的任何支持。

【问题讨论】:

  • 对我有用,在 REPL 和运行脚本中。你使用的是什么版本的节点,你能展示一个你的 .env 文件的例子吗?
  • 我在 .env 文件中添加了导致此错误的分号。

标签: node.js environment-variables


【解决方案1】:

在我的情况下,在我的 MacBook Pro 上读取我的 .env 文件的相同代码库没有读取我的登台服务器 ubuntu 18.04 上的 .env 文件,所以我尝试了@user3006381 建议,我注意到代码正在尝试查看对于我的用户目录“/home/myusername/.env”而不是“/home/myusername/project/.env”中的 .env 文件, 如果您知道为什么会这样,请添加评论。

【讨论】:

    【解决方案2】:

    在一些操作系统上(主要是一些 linux 发行版,我在看你的 raspbian),.env 文件不起作用。重命名它们并导入

    【讨论】:

      【解决方案3】:

      我自己在这里注意到了一些东西。

      我已经正确定义了.env,等等,并且我在那里定义了DATABASE_URL,但是尽管这样做了另一个DATABASE_URL被引用,如果它存在的话,也许引用了一个全局环境变量?

      无论如何,我发现当我在.env 中定义TESTCONNECTION_STRING 时,它们都被正确引用,而DATABASE_URL 仍然没有被引用。

      谢谢,

      迈克尔

      【讨论】:

        【解决方案4】:

        就我而言,我正在创建一个 vscode 扩展,其中 __dirname 指的是 d:\extension\my_extension\out 之类的东西。

        根文件夹是my_extension,但__dirname指向my_extension\out

        所以我通过写来修复它

        require('dotenv').config({path: __dirname.slice(0,-3)+'/.env'});
        

        【讨论】:

          【解决方案5】:

          我有类似的问题。我通过修剪解决了它。请检查,path.resolve 可能会在路径末尾添加额外的空间。

          var path = require('path');
          const envPath = path.resolve(process.cwd()+'/config','.env.'+process.env.NODE_ENV).trim()
          require('dotenv').config({ path: envPath })
          

          我的包脚本是这样使用多个.env的:

           "scripts": {
              "start": "set NODE_ENV=development && nodemon ./bin/www",
              "prod": "set NODE_ENV=production && node ./bin/www"
            },
          

          【讨论】:

            【解决方案6】:

            如果这是使用 dotenv 的 react native 项目,.env 文件可能不会更改,因为它被缓存在 IOS 构建中。在 XCode 中,每次更新 .env 时执行 Product > Clean Build Folder

            【讨论】:

            • 你也可以使用react-native-dotenv来管理你的.env文件
            猜你喜欢
            • 2020-11-10
            • 1970-01-01
            • 2015-07-14
            • 2020-08-05
            • 2021-11-16
            • 2019-06-16
            • 2019-11-19
            • 2019-10-23
            • 2021-08-31
            相关资源
            最近更新 更多