【问题标题】:Correct way to use dotenv-expand (.env)使用 dotenv-expand (.env) 的正确方法
【发布时间】:2020-04-14 02:30:14
【问题描述】:

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}

dotenv-expand的使用方法是否正确?如果是这样,它在我的情况下不起作用。我想创建与上述变量相关的变量:

DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}

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

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

const config = dotenv.config();

dotenvExpand(config);

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

【问题讨论】:

  • 您的文件看起来不错。您如何读取代码中的 .env 文件?
  • process.env.DATABASE_URL 我得到了 - postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB} 我写的跨度>
  • console.log(dotenvExpand(config).parsed) 显示了吗?
  • dotenvExpand(config).parsed.DATABASE_URL - 这表明我需要什么,这是正确的方法吗?
  • 刚刚来自tests

标签: node.js dotenv


【解决方案1】:

使用您的代码,例如:

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

const config = dotenv.config();

dotenvExpand(config);

console.log(config);

我收到以下错误:

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

将代码更改为:

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

const config = dotenv.config();

dotenvExpand(config);

console.log(config);

我得到了想要的输出:

{
  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'
  }
}

如果您想坚持使用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

【讨论】:

  • 感谢您的回答。以为我必须在 process.env 中得到它)
  • 是的,很好)谢谢)还有一个问题。我初始化了: const dotenv = require('dotenv'); const dotenvExpand = require('dotenv-expand');常量配置 = dotenv.config(); dotenvExpand(config);对于我想要获取此变量的每个页面,因为没有它 - 它不起作用。我的意思是在不同的文件中,而不是在 app.js
  • 通常你只会在顶层设置你的环境变量一次。然后您可以在当前 Node.js 进程中通过process.env 访问它们。来自dotenv尽早在您的应用程序中,要求并配置 dotenv。 dotenv-expand 也是如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 2023-02-08
  • 2019-12-30
  • 1970-01-01
  • 2021-11-08
  • 2020-04-30
  • 2022-07-05
相关资源
最近更新 更多