2017-08-15 56 views
1

我沿着一個名爲「構建和部署全堆棧響應應用程序」的Lynda.com教程以及「注入中繼網絡層」一章,有在index.js,試圖建立一個網絡層,程序編譯成功,但我收到在瀏覽器中出現以下錯誤:繼電器的注入網絡層不被識別爲反應應用程序中的函數

類型錯誤:__WEBPACK_IMPORTED_MODULE_4_react_relay ___ default.a.injectNetworkLayer不是一個函數

任何想法? 我會很感激的, CM

(我的index.js文件)

import React from 'react' 
import ReactDOM from 'react-dom' 
import {Router, browserHistory, applyRouterMiddleware} from 'react-router' 
import Routes from './routes' 
import Relay from 'react-relay' 
import useRelay from 'react-router-relay' 
import {RelayNetworkLayer, urlMiddleware} from 'react-relay-network-layer' 
import {relayApi} from './config/endpoints' 
import auth from './utils/auth' 

const createHeaders =() => { 
    let idToken = auth.getToken() 
    if (idToken) { 
    return { 
     'Authorization': `Bearer ${idToken}` 
    } 
    } else { 
    return {} 
    } 
} 

Relay.injectNetworkLayer(
    new RelayNetworkLayer([ 
    urlMiddleware({url: (req) => relayApi,}), 
     next => req => { 
      req.headers = { 
      ...req.headers, 
      ...createHeaders() 
      } 
      return next(req) 
     }, 
    ],{disableBatchQuery: true}) 
) 

ReactDOM.render(
    <Router 
    environment={Relay.Store} 
    render={applyRouterMiddleware(useRelay)} 
    history={browserHistory} 
    routes={Routes} 
    />, 
    document.getElementById('root') 
) 

回答

1

你可能不會使用繼電器的正確版本,但它只是一個猜測。檢查教程是否指定了任何版本並檢查您正在使用哪一個版本。

在Relay的最新版本:Relay-Modern中有很多變化。您可能想要查看一下,它的方式比Relay-Classic更方便更高效。

也有更簡單的方法來組合路由器與繼電器。直接在路由器的上方或下方創建您的中繼環境,具體取決於您是否需要從您的數據庫中獲取路由。但我想你只需要通過教程。

+0

感謝您回覆joeydebreuk。我安裝了用於教程的Relay版本,但問題依然存在...... –

+0

實際上,我只將「react-relay-network-layer」與所使用的版本進行了匹配。當我在所使用的版本上安裝「react-relay」時,我能夠通過錯誤。非常感謝。 –

+0

真棒:)歡迎。 – joeydebreuk

相關問題