如何让webpack在构建期间不将process.env变量转换为它们的值?

时间:2018-04-07 03:47:40

标签: javascript node.js reactjs npm webpack

我的一个项目文件中有以下内容:

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想要在构建之后编辑文件。

2 个答案:

答案 0 :(得分:2)

你使用了错误的目标。
默认情况下,webpack构建要在浏览器中运行的应用程序。这意味着它将模拟本地节点函数,如path fsprocess

您的目标是节点,因此无需模拟这些 将其添加到您的webpack.config.js

module.exports = {
  target: 'node'
};

https://webpack.js.org/concepts/targets/#usage

答案 1 :(得分:1)

您需要的是0而不是process.argv

process.env

然后:

// server.js

const baas = process.argv[0];
console.log('baas', baas);

为方便起见,您可以使用此模块https://www.npmjs.com/package/yargs