Reactjs React relay injectNetworkLayer不是一个函数

Reactjs React relay injectNetworkLayer不是一个函数,reactjs,auth0,graphcool,react-router-relay,react-relay,Reactjs,Auth0,Graphcool,React Router Relay,React Relay,我遵循lynda在“注入中继网络层”一章中的教程:“构建和部署全堆栈React应用程序”。index.js中有一个设置网络层的尝试,程序编译成功,但我在浏览器中收到以下错误: TypeError:\uuuu网页包\u导入的\u模块\u 4\u反应\u中继\uuuuuu默认值。a.injectNetworkLayer不是一个函数 index.js文件是: import React from 'react' import ReactDOM from 'react-dom' import {Route

我遵循lynda在“注入中继网络层”一章中的教程:“构建和部署全堆栈React应用程序”。index.js中有一个设置网络层的尝试,程序编译成功,但我在浏览器中收到以下错误:

TypeError:\uuuu网页包\u导入的\u模块\u 4\u反应\u中继\uuuuuu默认值。a.injectNetworkLayer不是一个函数

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')
)
从“React”导入React
从“react dom”导入react dom
从“react Router”导入{Router,browserHistory,applyRouterMiddleware}
从“/Routes”导入路由
从“反应继电器”导入继电器
从“react router relay”导入用户权限
从“反应中继网络层”导入{RelayNetworkLayer,urlMiddleware}
从“./config/endpoints”导入{relayApi}
从“/utils/auth”导入身份验证
常量createHeaders=()=>{
让idToken=auth.getToken()
如果(idToken){
返回{
'Authorization':'Bearer${idToken}`
}
}否则{
返回{}
}
}
中继网络层(
新中继网络层([
urlMiddleware({url:(req)=>relayApi,}),
下一步=>req=>{
请求标题={
…请求标头,
…createHeaders()
}
返回下一个(req)
},
],{disableBatchQuery:true})
)
ReactDOM.render(
,
document.getElementById('root'))
)

发现Chris Mazzouchi的答案很有用,尽管我必须卸载并重新安装以下特定版本才能使其正常工作:

yarn remove react-relay react-relay-network-layer react-router-relay
yarn add react-relay@0.10.0 react-relay-network-layer@1.3.9 react-router-relay@0.13.5

使用经典版本的react继电器可能更容易。

从“反应继电器/经典型”导入继电器

要想修复它,你必须做些什么?