我的一个项目文件中有以下内容:
const baas = process.env.DBID;
console.log('baas', baas);
如果我跑:
cross-env PORT=4000 NODE_ENV=production WEBPACK_CONFIG=browser_prod,server_prod webpack --colors
我的server.js文件如下:
const baas = undefined;
console.log('baas', baas);
正如所料。但是,我希望能够在运行构建的应用程序时设置ID,而不是在构建应用程序时,即:
DBID=someotherid node dist/server.js
所以我需要webpack在构建时不将const baas = process.env.DBID
转换为它的值,而是保持原样,因此server.js
在运行时使用它的值。
我该怎么做?
注意:如果我手动编辑构建的server.js
并将undefined
更改为process.env.DBID
,则运行脚本可以正常工作,应用程序会使用运行时的env var,但我不会#39 ; t想要在构建之后编辑文件。
答案 0 :(得分:2)
你使用了错误的目标。
默认情况下,webpack构建要在浏览器中运行的应用程序。这意味着它将模拟本地节点函数,如path
fs
和process
您的目标是节点,因此无需模拟这些
将其添加到您的webpack.config.js
module.exports = {
target: 'node'
};
答案 1 :(得分:1)
您需要的是0
而不是process.argv
:
process.env
然后:
// server.js
const baas = process.argv[0];
console.log('baas', baas);
为方便起见,您可以使用此模块https://www.npmjs.com/package/yargs