在 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
文件中定义)