英文:
How to run NPM run script passing env variable (calling the appropriate env.{env} file)?
问题
我在NodeJs应用程序上,已经创建了两个文件:
.env
.env.production
在第一个文件中,我有开发环境的设置,在第二个文件中,我有生产环境的设置。
现在,在本地运行时,我想要执行以下操作:
npm run jobs_orders
在package.json文件中配置如下:
"scripts": {
"job_orders": "supervisor --mode production jobs/job_orders.js",
}
但是在应用程序中后来执行以下操作时:
import 'dotenv/config';
...
process.env.DATABASE_CONNECTION_STRING
它总是读取.env文件中的DATABASE_CONNECTION_STRING设置,而不是.env.production文件中的设置。
我错在哪里?我该如何修复它?
英文:
I'm on NodeJs app, I've create two files:
.env
.env.production
on the first I have dev settings, on the later prod settings.
Now, running on local, I'd like to do this:
npm run jobs_orders
Configured this way within package.json:
"scripts": {
"job_orders": "supervisor --mode production jobs/job_orders.js",
},
But later on app, when doing:
import 'dotenv/config';
...
process.env.DATABASE_CONNECTION_STRING
it always read the DATABASE_CONNECTION_STRING
settings on .env file, not the one on env.production.
Where am I wrong? And how do I fix it?
答案1
得分: 1
因为 dotenv
默认会加载位于 path.resolve(process.cwd(), '.env')
的环境变量。
您可以设置 process.env.NODE_ENV
变量来确定加载不同环境的 .env
文件。
index.mjs
:
import { config } from 'dotenv';
import path from 'path';
const nodeEnv = process.env.NODE_ENV || '';
config({ path: path.resolve(process.cwd(), `.env${nodeEnv ? '.' + nodeEnv : ''}`) });
console.log('process.env.DATABASE_CONNECTION_STRING: ', process.env.DATABASE_CONNECTION_STRING);
.env
DATABASE_CONNECTION_STRING=dev
.env.production
DATABASE_CONNECTION_STRING=prd
开发环境:
$ node index.mjs
process.env.DATABASE_CONNECTION_STRING: dev
生产环境:
$ NODE_ENV=production node index.mjs
process.env.DATABASE_CONNECTION_STRING: prd
参考链接:
Node 版本: v14.21.3
英文:
Because dotenv
will load the environment variables located in path.resolve(process.cwd(), '.env')
by default.
You can set the process.env.NODE_ENV
variable to determine which .env
to load for different environments.
index.mjs
:
import { config } from 'dotenv';
import path from 'path';
const nodeEnv = process.env.NODE_ENV || '';
config({ path: path.resolve(process.cwd(), `.env${nodeEnv ? '.' + nodeEnv : ''}`) });
console.log('process.env.DATABASE_CONNECTION_STRING: ', process.env.DATABASE_CONNECTION_STRING);
.env
DATABASE_CONNECTION_STRING=dev
.env.production
DATABASE_CONNECTION_STRING=prd
Development:
$ node index.mjs
process.env.DATABASE_CONNECTION_STRING: dev
Production:
$ NODE_ENV=production node index.mjs
process.env.DATABASE_CONNECTION_STRING: prd
Reference:
Node version: v14.21.3
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论