apollo-boostではlinkを設定できない
graphql-ruby と react + apollo ではじめてのGraphQLはじめました。
で 、graphql-ruby (Rails) はAPIサーバとして使っていて、Authorizationヘッダで認証するようにしています。
もともとはこんな感じでヘッダを設定していたのだけれど、
import ApolloClient from 'apollo-boost'; import { ApolloProvider } from 'react-apollo'; const client = new ApolloClient({ uri: 'xxxxxxx', request: operation => { operation.setContext({ headers: { 'Authorization': 'xxxxxxxx' }, }); }, }); ReactDOM.render( <Router> <ApolloProvider client={client}> <App /> </ApolloProvider> </Router>, document.getElementById('root'), );
画像ファイルを上げたいということになり、apollo-upload-client でApolloClient
にlinkオプションを渡そうとしたけどうまくいかない。
from 'apollo-boost'
な ApolloClient
は下記のオプションしか取らず、そこにlink
は含まれていないのが原因でした。
なので、ApolloBoost was initialized with unsupported options: link
とか怒られるんだけど、
ずっとNetworkタブをみてなんでだろって思っていたので、Consoleタブを見ていなかった。
どうせならもっと盛大に止まってくれればよかったのに。
import ApolloClient from 'apollo-client';
として解決。
この場合、
import ApolloClient from 'apollo-client'; import { InMemoryCache } from 'apollo-cache-inmemory'; const client = new ApolloClient({ link: xxxxxx, cache: new InMemoryCache(), })
として cache
を指定しないといけないし、apollo-boost
をみて必要そうなlinkをコピってくる必要がある。