有没有办法将 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 文件。
我想知道是否有办法将 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 文件。