dotenv-expand (.env) 的正确使用方法

And*_*ich 6 node.js dotenv

https://github.com/motdotla/dotenv-expand

POSTGRES_DB=postgresdb
POSTGRES_PASSWORD=password
POSTGRES_USER=postgresadmin
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
PORT=3000
DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
Run Code Online (Sandbox Code Playgroud)

它的使用方法正确吗dotenv-expand?如果是这样,它对我来说不起作用。我想创建与上面变量相关的变量:

DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
Run Code Online (Sandbox Code Playgroud)

但是当我使用process.env.DATABASE_URL- 检查它时,它会返回与上面看到的相同的变量,而无需更改${POSTGRES_USER}相应的参数

import dotenv from 'dotenv';
import dotenvExpand from 'dotenv-expand';

const config = dotenv.config();

dotenvExpand(config);
Run Code Online (Sandbox Code Playgroud)

在这里你可以看到我如何dotenv-expand初始化dotenv

pza*_*ger 3

使用您的代码,例如:

import dotenv from 'dotenv';
import dotenvExpand from 'dotenv-expand';

const config = dotenv.config();

dotenvExpand(config);

console.log(config);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

(node:23421) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
Run Code Online (Sandbox Code Playgroud)

将您的代码更改为:

const dotenv = require('dotenv');
const dotenvExpand = require('dotenv-expand');

const config = dotenv.config();

dotenvExpand(config);

console.log(config);
Run Code Online (Sandbox Code Playgroud)

我得到了所需的输出:

{
  parsed: {
    POSTGRES_DB: 'postgresdb',
    POSTGRES_PASSWORD: 'password',
    POSTGRES_USER: 'postgresadmin',
    POSTGRES_HOST: 'localhost',
    POSTGRES_PORT: '5432',
    PORT: '3000',
    DATABASE_URL: 'postgres://postgresadmin:password@localhost:5432/postgresdb'
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您想坚持使用import,请添加"type": "module"到您的 package.json 中。

编辑:

console.log(process.env.DATABASE_URL);工作正常。

我的整个设置:

mkdir dotenv-test && cd dotenv-test
npm init -y
npm install dotenv dotenv-expand
touch .env
rouch .index.js
(copying .env and code)
node index.js
Run Code Online (Sandbox Code Playgroud)