【问题标题】:process.env undefined from docker-composedocker-compose 未定义的 process.env
【发布时间】:2019-08-12 03:44:54
【问题描述】:

我在带有 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 buildyarn watch重新编译它

【问题讨论】:

    标签: node.js docker webpack environment-variables


    【解决方案1】:

    在你的 webpack 配置中试试这个:

    new DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
    })
    

    此外,官方文档有一个snippet 关于它。

    【讨论】:

    • 但是我能问一下为什么它不能开箱即用吗?我希望 process.env 可以读取任何已定义的环境变量-.-
    猜你喜欢
    • 2021-11-23
    • 2021-12-20
    • 2015-05-19
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多