如何运行NPM运行脚本传递env变量(调用适当的env.{env}文件)?

iecba09b  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(141)

我在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上的设置。
我哪里错了?我该怎么弥补?

smdncfj3

smdncfj31#

因为默认情况下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


参考文件:

  • react-scripts/config/env.js
  • 可以使用哪些其他.env文件?

节点版本:v14.21.3

相关问题