我的一个项目文件中包含以下内容:
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变量,但我不想在构建后编辑文件。
3条答案
按热度按时间luaexgnf1#
你用错靶子了。
默认情况下,webpack构建的应用程序将在浏览器中运行,这意味着它将模拟
path
fs
和process
等本地节点函数您的目标是node,因此没有必要模拟这些。
将此添加到您的
webpack.config.js
https://webpack.js.org/concepts/targets/#usage
zdwk9cvp2#
您需要的是
process.argv
而不是process.env
:然后:
为方便起见,您可以使用此模块https://www.npmjs.com/package/yargs
yv5phkfx3#
我能够通过如下间接访问来阻止Webpack转换
process.env
:您需要间接获取
process
而不是env
,因为webpack将process
变量定义为类似/* provided dependency */ var process = __webpack_require__(/*! process/browser */ "process/browser");
的值