【发布时间】:2025-12-09 18:45:02
【问题描述】:
我正在使用 webpack 捆绑同构 JS 应用程序 (based on this example),以便浏览器运行与服务器相同的代码。一切都运行顺利,除了我有一个config.js,其中一些设置是从服务器上的环境变量中提取的:
module.exports = {
servers:
auth: process.env.AUTH_SERVER_URL,
content: process.env.CONTENT_SERVER_URL
}
}
在服务器上这很好,但是当 webpack 为客户端渲染时 process 是空的,这不起作用。
我希望有一种“查找和替换”的 webpack 插件,可以单独用文件中的内容替换它们?
"…config.js content…".replace(/process\.env\.([a-z0-9_]+)/, function(match, varName) {
return process.env[varName];
})
【问题讨论】:
-
我找到了envify,但我很难配置它。
-
有一个插件,允许将应内联的环境变量列入白名单:
new webpack.EnvironmentPlugin(["AUTH_SERVER_URL", "CONTENT_SERVER_URL"]) -
问题在于构建环境的机器并不总是运行代码的机器(在我们的例子中确实如此)。一种方法是将它们放在 HTML 中的
global和window中,但这不是我最喜欢的解决方案。
标签: javascript webpack