react-router-relay: Error - Make sure the `relay` property on the React context conforms to the `RelayEnvironment` interface.
Hi, I ran into some problems with the new version (Not very sure about this). Basically, I got the error:
invariant.js:38 Uncaught Invariant Violation: RelayContainer: `Relay(onlyUpdateForKeys(Todos))` was rendered with invalid Relay context `undefined`. Make sure the `relay` property on the React context conforms to the `RelayEnvironment` interface.
import React from 'react';
import Relay from 'react-relay';
import useRelay from 'react-router-relay';
import { Router, Route, applyRouterMiddleware } from 'react-router';
import ViewerQuery from 'client/queries/viewer';
import Todos from 'client/components/todos/index.jsx';
import StaticPage from 'client/components/static-page/index.jsx';
export const getClientHistory = () =>
require('react-router').browserHistory;
export const getServerHistory = (url) =>
require('react-router').createMemoryHistory(url);
export const getRoutes = (history) => (
<Router
history={history}
render={applyRouterMiddleware(useRelay)}
environment={Relay.Store}
>
<Route path="/" component={Todos} queries={ViewerQuery} />
<Route path="/static-page" component={StaticPage} />
</Router>
);
// @flow
import React from 'react';
import Relay from 'react-relay';
import { compose, onlyUpdateForKeys } from 'recompose';
import { createContainer } from 'recompose-relay';
import AddTodoMutation from 'client/mutations/add-todo';
import CompleteTodoMutation from 'client/mutations/complete-todo';
import RemoveTodoMutation from 'client/mutations/remove-todo';
import TodosHeader from './todos-header';
import TodosAdd from './todos-add';
import TodosBody from './todos-body';
import TodosFooter from './todos-footer';
import type { ViewerType } from './types';
export const Todos = ({ viewer, relay }: { viewer: ViewerType, relay: Object }) => (
<div className="container">
<div className="row">
<TodosHeader />
<TodosAdd relay={relay} viewer={viewer} />
<TodosBody viewer={viewer} />
<TodosFooter />
</div>
</div>
);
Todos.propTypes = {
viewer: React.PropTypes.object,
relay: React.PropTypes.object,
};
export const enhance = compose(
createContainer({
initialVariables: {
numberOfTodos: 10,
},
fragments: {
viewer: () => Relay.QL`
fragment on Viewer {
todos(last: $numberOfTodos) {
edges {
node {
id
text
complete
}
}
}
numberOfTodos
${AddTodoMutation.getFragment('viewer')}
${CompleteTodoMutation.getFragment('viewer')}
${RemoveTodoMutation.getFragment('viewer')}
}
`,
},
}),
onlyUpdateForKeys(['viewer', 'relay'])
);
export default enhance(Todos);
I use createContainer from recompose, and I don’t know how I got this error. I just got this error recently. By the way, this is my project https://github.com/hung-phan/koa-react-isomorphic/tree/features/relay
About this issue
- Original URL
- State: closed
- Created 8 years ago
- Comments: 16 (6 by maintainers)
["es2015", { "modules": false }]seems to turn offimport?I get
SyntaxError: Unexpected token import.Here’s my
.babelrcI’m using the latest babel+webpack beta 20.