2

我嘗試了webpack(在Rails的webpacker庫的上下文中)並希望將生成的bundle用於服務器渲染React組件。在Node.js(純V8環境)中加載webpack-dev-server資產

我可以從本地開發服務器上抓取文件,但是當我將它們加載到我的服務器端JavaScript上下文中時會出現問題。 (我使用Ruby的ExecJS,通過therubyracer支持,這是一個Ruby結合V8。)

由於束是從的WebPack-DEV-服務器,它包括了一個設置熱模塊重新加載一串代碼。此代碼假定它是從script標記加載的,因此它會對頁面的URL進行一些檢查。在裸V8背景下,沒有 URL,所以我們得到很多的錯誤,例如:

TypeError: Cannot read property 'protocol' of undefined 

因爲它試圖讀取self.location.protocol。 (self存在,但self.location不。)

我開始嘲笑下來的各種的DOM API導致的錯誤,而走的路,但我不知道,有沒有適當方式做到這一點?例如:

  • 我能得到的WebPack-DEV-服務器的HMR代碼包?
  • 我能以某種方式繞過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') 

,設置代碼爲目前但它從來沒有運行!這很難理解和脆弱,但它作品