我正在尝试 webpack(在 Railswebpacker
库的上下文中),并希望将生成的包用于服务器渲染 React 组件。
我可以很好地从本地开发服务器获取文件,但是当我将它们加载到我的服务器端 JavaScript 上下文中时问题就来了。(我正在使用 Ruby 的ExecJS
,由 支持therubyracer
,它是与 V8 的 Ruby 绑定。)
由于捆绑包来自 webpack-dev-server,它包含一堆用于设置热模块重新加载的代码。此代码假定它是从script
标记加载的,因此它会对页面的 URL 进行一些检查。在纯 V8 上下文中,没有URL,因此我们会遇到很多错误,例如:
TypeError: Cannot read property 'protocol' of undefined
因为它试图读取self.location.protocol
. (self
存在,但self.location
不存在。)
我开始模拟各种 DOM API 以使错误消失,但我想知道,有没有合适的方法来做到这一点?例如:
- 我可以在没有HMR 代码的情况下从 webpack-dev-server 获取捆绑包吗?
- 我可以以某种方式绕过 HMR 代码(除了添加大量模拟之外)吗?