Есть ли способ передать идентификатор экземпляра кластера PM2 на скомпилированный сервер webpack node.js? - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь выяснить, есть ли способ передать идентификатор экземпляра режима кластера PM2 в a, скомпилированный с сервером webpack, node.js. Я хочу писать в разные папки в зависимости от идентификатора кластера.

Я попытался запустить сервер узлов напрямую через PM2, и он может получить экземпляр instance_var (NODE_APP_INSTANCE) без каких-либо проблем. Я просто не уверен, есть ли какой-нибудь плагин или хак, который позволил бы скомпилированному приложению принимать / захватывать внешние env. переменные.

Вот мой конфиг вебпака, ничего особенного

const path = require('path');
const nodeExternals = require('webpack-node-externals');
const webpack = require('webpack');
const CopyPkgJsonPlugin = require('copy-pkg-json-webpack-plugin');
const CopyPlugin = require('copy-webpack-plugin');

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  node: {
    __dirname: false
  },
  output: {
    filename: 'testing.js',
    path: path.resolve(__dirname, 'dist/production')
  },
  target: 'node',
  externals: [nodeExternals()],
  plugins: [
    // new CopyPlugin([
    // { from: './ecosystem.config.js', to: path.resolve(__dirname, 'dist/production') }
    // ]),
    new CopyPkgJsonPlugin({
      remove: ['devDependencies']
    }),
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: JSON.stringify('production'),
        API_URL: JSON.stringify('127.0.0.1'),
        API_PORT: JSON.stringify('4000')
      }
    })
  ]
};

Скорее всего, мой подход неверен, я открыт для предложений.

1 Ответ

0 голосов
/ 12 июня 2019

Решил это, удалив webpack.DefinePlugin

  new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: JSON.stringify('production'),
        API_URL: JSON.stringify('127.0.0.1'),
        API_PORT: JSON.stringify('4000')
      }
    })

и передав реквизиты из pm2. NODE_ENV = production API_URL = 127.0.0.1 API_PORT = 4000 pm2 начать тестирование. Js -i max

Теперь приложение имеет доступ ко всем переменным env, включая переменные из PM2.Скорее всего, он также будет работать с файлом ecosystem.config.js.

...