Node.js 使用dotenv展开(.env)的正确方法

Node.js 使用dotenv展开(.env)的正确方法,node.js,dotenv,Node.js,Dotenv,使用dotenv expand是否正确?如果是这样的话,对我来说就不行了。我想创建与上述变量相关的变量: DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB} 但是当我使用process.env.DATABASE\u URL检查它时,它会返回与上面相同的变量,而不会更改相应参数的${POSTGRES\u USER} import

使用
dotenv expand
是否正确?如果是这样的话,对我来说就不行了。我想创建与上述变量相关的变量:

DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
但是当我使用
process.env.DATABASE\u URL
检查它时,它会返回与上面相同的变量,而不会更改相应参数的
${POSTGRES\u USER}

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

const config = dotenv.config();

dotenvExpand(config);
在这里,您可以看到我如何使用您的代码初始化
dotenv展开
,如:

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'
  }
}
如果要坚持导入,请在package.json中添加
“type”:“module”

编辑:

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
console.log(process.env.DATABASE\uurl)工作正常

我的整个设置:

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

你的档案看起来不错。如何读取代码中的.env文件?process.env.DATABASE_URL和I get-postgres://${postgres_USER}:${postgres_PASSWORD}@${postgres_HOST}:${postgres_PORT}/${postgres DB}正如我所写的
console.log(dotenvExpand(config).parsed)
show it?dotenvExpand(config).parsed.DATABASE_URL-这显示了我需要什么,这是正确的方法吗?我只是从谢谢你的回答开始的。我想我必须在过程中得到它。env)是的,很好)谢谢)还有一个问题。我应该初始化:const dotenv=require('dotenv');const dotenvExpand=require('dotenv-expand');const config=dotenv.config();dotenvExpand(配置);对于每个我想要得到这个变量的页面,因为没有它,它就不能工作。在不同的文件中,我的意思是,不是在app.js中,通常您只会在顶层设置一次环境变量。然后可以通过当前Node.js进程中的
process.env
访问它们。From:在应用程序中尽早要求并配置dotenv。dotenv expand也一样。