【发布时间】:2020-01-08 02:44:16
【问题描述】:
在nodejs项目中如果
- 我有
index.js文件,其中包含以下内容
const path = require('path');
require('dotenv').config({ path: path.join(__dirname, '/.env') });
console.log(process.env.ENVIRONMENT_VARIABLE);
- 我有
.env文件,其中包含以下内容
ENVIRONMENT_VARIABLE=a
...and more environment variables
- 然后我转到 bash 并运行以下命令
export ENVIRONMENT_VARIABLE=b && node ./index.js
运行应用程序后我将获得的ENVIRONMENT_VARIABLE 的值是b(在 bash 中不受欢迎)
但是在 webpack 项目中如果
- 我有
index.js文件,其中包含以下内容
console.log(process.env.ENVIRONMENT_VARIABLE);
- 我有
.env文件与前一个文件相同(在 nodejs 项目中) - 而我的 webpack 配置如下
const path = require('path');
const webpack = require('webpack');
const dotenv = require('dotenv').config({ path: path.join(__dirname, '/.env') });
module.exports = {
...
entry: path.join(__dirname, '/index.js'),
...
plugins: [
...
new webpack.DefinePlugin({
'process.env': JSON.stringify(dotenv.parsed)
}),
...
],
...
};
- 然后我转到 bash 并运行以下命令
export ENVIRONMENT_VARIABLE=b && yarn start
我在运行应用程序后将获得的ENVIRONMENT_VARIABLE 的值是a(在.env 文件中阻止)而不是b(在bash 中阻止)
但是我想要获得的
ENVIRONMENT_VARIABLE的值是b(在bash 中被拒绝)而不是a(在.env文件中被拒绝)。如果ENVIRONMENT_VARIABLE没有在 bash 或系统中定义,我想要得到的值是a(在.env文件中定义)
【问题讨论】:
标签: javascript node.js bash webpack dotenv