我在带有webpack的nodejs中有一个脚本,我想使用docker-compose中的环境变量,但是每次变量为undefined
时。
这是一小部分docker-compose:
container:
image: "node:8-alpine"
user: "node"
working_dir: /home/node/app
environment:
- NODE_ENV=development
volumes:
- ./project:/home/node/app
- ./conf:/home/node/conf
command: "yarn start"
我有此webpack配置:
const path = require('path');
const TerserPlugin = require('terser-webpack-plugin');
const DefinePlugin = require('webpack').DefinePlugin;
module.exports = {
entry: './src-js/widget.js',
mode: process.env.NODE_ENV || 'development',
output: {
filename: 'widget.js',
path: path.resolve(__dirname, 'public')
},
optimization: {
minimizer: [new TerserPlugin()]
},
plugins: [
new DefinePlugin({
ENV: JSON.stringify(process.env.NODE_ENV)
})
]
};
在我的节点脚本中,我想使用NODE_ENV变量,因此我尝试了所有这些解决方案,但是每次都是undefined
console.log(process.env.NODE_ENV);
console.log(ENV);
console.log(process.env); //is empty
从docker容器中,我尝试打印环境变量,并且在其中包含NODE_ENV,但无法将其用于节点文件中。为什么?
通常我使用yarn build
或yarn watch
重新编译
答案 0 :(得分:1)
在您的webpack配置中尝试以下操作:
new DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
})
此外,官方文档对此有snippet。