网络错误:NUXT SSR重新加载,阿波罗请求时,JSON位置0的JSON中的意外令牌<错误

时间:2019-12-02 03:42:28

标签: graphql nuxt.js apollo

我正在使用NUXT通过graphql进行服务器端渲染。对于graphql请求,我正在使用apollo-boost。在SPA模式下一切正常,但是当我将NUXT设置为通用模式(SSR模式)时。然后,仅在刷新时出现此Network error: Unexpected token < in JSON at position 0 error错误。

从我搜索过的内容来看,此问题是由返回html而不是JSON的请求引起的。但是我检查了后端服务器,并在发生此错误时根本没有任何请求。

这是设置apollo-boost(graphql.js)的代码:

import ApolloBoost from 'apollo-boost';
import fetch from 'node-fetch';
import Cookie from 'js-cookie';

console.log({ uri: `${process.env.BACKEND_URL}/graphql` });
export default new ApolloBoost({
  uri: `${process.env.BACKEND_URL}/graphql`,
  fetch,

  request: async ({ variables: { token }, setContext }) => {
    console.log('request');
    if (process.client) token = Cookie.get('mannacea_token');
    setContext({
      headers: {
        authorization: token ? `Bearer ${token}` : ''
      }
    });
  }
});

这是Store,action(category.js)中的示例代码:

  async fetchAll({ commit }) {
    try {
      console.log('category fetchall');
      let result = await client.query({
        query: gql`
          query categories {
            categories {
              id
              name {
                ko
                en
                ru
              }
              archived
            }
          }
        `
      });
      console.log({ result });
      let {
        data: { categories }
      } = result;

      commit('setAll', categories);
    } catch (e) {
      console.error(e);
      throw e;
    }
  },

最后是在此处调用动作的位置(category.vue):

fetch({ store }) {
    Promise.all([
      store.dispatch("category/fetchAll"),
      store.dispatch("post/fetchAll")
    ]);
  },

当我console.log时,我得到以下日志:

{                                                                                                                                                                                  12:18:12
  uri: 'http://localhost:3000/graphql'
} '(repeated 1 times)'
category fetchall                                                                                                                                                                  12:18:12
request   

然后发生错误

 WARN  [Network error]: ServerParseError: Unexpected token < in JSON at position 0                                                                                                 12:18:12


 ERROR  Network error: Unexpected token < in JSON at position 0

通过这种方式,类别请求不需要任何身份验证。从控制台日志来看,该错误似乎是在apollo向后端请求之前发生的。我怀疑graphql.js中的阿波罗设置有问题。

0 个答案:

没有答案