NodeJS dotenv不阅读.env文件中的变量

vsdwdz23  于 2023-10-17  发布在  Node.js
关注(0)|答案(3)|浏览(120)

我尝试使用dotenv加载以下.env文件:

PORT=4000
BASE_URL=http://127.0.0.1:${PORT}/
require('dotenv').config('.env')

由于某些原因,dotenv不会将${PORT}解析为4000,而是返回一个像这样的普通字符串:

{
  parsed: {
    PORT: '4000',
    BASE_URL: 'http://127.0.0.1:$PORT/',
  }
}

如何让dotenv读取.env文件中的变量?

qjp7pelc

qjp7pelc1#

您可以使用dotenv-expand,因为dotenv不支持使用${}语法的变量替换。
使用dotenv-expand安装

npm install dotenv-expand

add require dotenvExpand使用${}语法保持相同的.env文件

var dotenv = require("dotenv");
var dotenvExpand = require("dotenv-expand");

var result = dotenv.config();
dotenvExpand.expand(result);

console.log(result.parsed);

输出将返回如下:

{
  PORT: '4000',
  BASE_URL: 'http://127.0.0.1:4000/'
}

输出量:

wz3gfoph

wz3gfoph2#

尝试使用process.env访问变量,以获得process.env.PORT的重复值

yqlxgs2m

yqlxgs2m3#

  • 在包含variable=property定义的项目文件夹中设置.env或config.env文件,即NODE_PORT=3000*
    ES6
import dotenv from 'dotenv';

commonJS

const dotenv = require('dotenv');
  • 默认情况下dotenv.config()搜索“.env”文件直到目录链中的根目录,但我们可以指定自己的文件名,即;*
dotenv.config({ path: './config.env' });
  • 然后,使用所有已定义的环境变量作为属性on;*
process.env.<variable>
  • 例如;*
console.log(process.env.NODE_PORT);

相关问题