process.env не определен из docker-compose - PullRequest
1 голос
/ 21 марта 2019

У меня есть скрипт в nodejs с webpack, где я хочу использовать переменные окружения из 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"

У меня есть эта конфигурация веб-пакета:

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

Из контейнера докера я попытался напечатать переменные окружения, и внутри него есть NODE_ENV, но я не могу использовать его в файле узла.Почему?

Обычно я использую yarn build или yarn watch для перекомпиляции

1 Ответ

1 голос
/ 21 марта 2019

Попробуйте это в своей конфигурации веб-пакета:

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

Кроме того, в официальных документах есть фрагмент .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...