有没有办法将 PM2 集群实例 ID 传递给已编译的 webpack node.js 服务器?

Is there a way to pass PM2 cluster instance ID to a compiled webpack node.js server?

我想知道是否有办法将 PM2 集群模式实例 ID 传递给使用 webpack 编译的 node.js 服务器。我想根据集群 ID 写入不同的文件夹。

我直接通过 PM2 尝试 运行 节点服务器,它可以毫无问题地抓取 instance_var (NODE_APP_INSTANCE)。我只是不确定是否有一些插件或黑客,这将允许编译的应用程序 accept/grab 外部环境。变量。

这是我的 webpack 配置,没什么特别的

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')
      }
    })
  ]
};

很可能我的方法是错误的,我愿意接受建议。

通过删除 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 start testing.js -i max

现在应用可以访问所有环境变量,包括来自 PM2 的环境变量。它很可能也适用于 ecosystem.config.js 文件。