2017-04-13 53 views
0

其中一個組件是有這個進口:角服務器端渲染:如何消除進口時「isBrowser =假」

import * as mapBoxGlClient from 'mapbox-gl/dist/mapbox-gl.js'; 

所有作品的作品。 但是當我運行節點:

node main.server.bundle.js 

我得到這個錯誤:

Cannot read property 'hardwareConcurrency' of undefined 

調查後,我意識到,mapbox需要window.navigator,瀏覽等所有的事情,可以」 t用於服務器

所以我的問題是有什麼辦法來跳過導入,或任何其他想法將不勝感激。

謝謝。

回答

0

問題不在於導入(在代碼運行之前導入被解析並解析),而是使用了其中的東西的代碼。據我所知,沒有辦法有條件地導入東西,但是無論您是否在瀏覽器環境中,都可以有條件地執行代碼。

+0

如果'isBrowser = false',我不會顯示這個組件。我認爲問題出現在mapbox中,我認爲這個代碼在創建mapBoxGlClient實例時運行。 – DanDuh