【问题标题】:Webpack bundle dynamic client configWebpack 捆绑动态客户端配置
【发布时间】:2016-08-02 12:13:49
【问题描述】:

我们有一个使用 Webpack 捆绑用于生产的 node.js 应用程序。

我们的问题是如何在已经有bundle后添加动态配置,而不需要重新bundle?

在服务器端,我们可以只使用节点环境变量,但是如何为客户端包做到这一点?具体来说,我们需要告诉浏览器模块要连接到哪个 api 服务器地址。

拥有一个带有配置的 js/json 文件会导致配置值被注入到包中,因此之后无法更改(以一种舒适的方式,无需打开包文件并手动查找和替换)。

使用 express-expose 之类的东西不是我们想要的,因为它会导致另一个网络请求获取数据,而且我们的服务器地址是动态的。

node-config 等,不能在客户端工作

【问题讨论】:

  • 检查这一点是否有解决方案:stackoverflow.com/questions/35408898/…
  • @ViniciusVieira 看起来它展示了如何使用浏览器不可用的环境变量
  • 你不能使用不同的脚本来为你需要的状态创建不同的包吗?
  • 问题是我们不希望它被捆绑,因为它不是动态的,并且捆绑后不能轻易让客户更改它

标签: node.js webpack config


【解决方案1】:

您可以创造性地使用externals 选项:

externals: [
    { appConfig: 'var appConfig' },
],

如果你将它添加到你的配置中,你可以让你的网络服务器在加载你的 webpack 包之前在某处添加一个带有var appConfig = {"config":"value"}; 的脚本标签,然后一个简单的require('appConfig') 就会把它捡起来。

【讨论】:

  • 感谢您的回答。实际上,我们最终让服务器在带有全局配置变量的包之前添加了一个脚本,但是使用您的方法,我们可以通过 webpack 控制行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 2021-04-28
  • 1970-01-01
相关资源
最近更新 更多