2

私はwebpackを(Railsのwebpackerライブラリのコンテキストで)試して、サーバーレンダリングのReactコンポーネント用に生成されたバンドルを使用したいと考えています。Node.js(plain V8環境)にwebpack-dev-serverアセットをロードする

ローカルのdevサーバからファイルを取得できますが、サーバ側のJavaScriptコンテキストにロードすると問題が発生します。 (私はV8に結合するルビーですtherubyracer、に裏打ちされた、RubyのExecJSを使用しています。)

バンドルはWebPACKの-devのサーバーからなので、それはホットモジュールのリロードを設定するためのコードの束を含んでいます。このコードは、scriptタグからロードされたものと仮定しているため、ページのURLのチェックを行っています。裸のV8の文脈では、そこには URLではありませんので、我々は、エラーの多くを得る、例えば:

TypeError: Cannot read property 'protocol' of undefined 

それはself.location.protocolを読み取ろうとするので。

私はエラーが離れて行くさせるために、様々なDOM APIをあざけるの道を始めているが、私は不思議(selfが存在するが、self.locationません。)、これを行うには適切方法はありますか?たとえば:

  • 私は HMRコードなしのWebPACK-devのサーバーからバンドルを取得することはできますか?
  • HMRコードを何らかの方法でバイパスすることができますか(たくさんのモックを追加する以外)?

答えて

0

これは非回答ですが、回避策が見つかりました。

クライアントのセットアップがrequire通話中に行われているので、私はrequireことをコメントアウトして、正規表現を使用しています:今

client_require = /__webpack_require__\(.*webpack-dev-server\/client\/index\.js.*\n/ 
# find the client require and comment it out: 
dev_server_asset.sub!(client_require, '//\0') 

を、セットアップコードは存在ですが、それは実行されることはありません!それは理解して脆いが、の作品は難しいです。

関連する問題