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
使用您的代码,例如:
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)
| 归档时间: |
|
| 查看次数: |
10272 次 |
| 最近记录: |