【问题标题】:How to debug an ApolloServer's context function?如何调试 ApolloServer 的上下文函数?
【发布时间】:2020-01-02 19:28:02
【问题描述】:

我正在尝试学习 GraphQL 教程 (https://www.apollographql.com/docs/tutorial/resolvers/),但是当我尝试预订行程时,我在操场上遇到错误,堆栈跟踪如下所示:

 "TypeError: Cannot read property 'id' of null",
            "    at UserAPI.bookTrips (/Users/kurtpeek/Documents/Scratch/fullstack-tutorial/start/server/src/datasources/user.js:35:38)",

src/index.js 中,ApolloServer (https://www.apollographql.com/docs/apollo-server/api/apollo-server/) 使用异步 context() 函数定义,如下所示:

const { ApolloServer } = require('apollo-server');
const typeDefs = require('./schema');
const { createStore } = require('./utils');
const resolvers = require('./resolvers');

const LaunchAPI = require('./datasources/launch');
const UserAPI = require('./datasources/user');
const isEmail = require('isemail');

const store = createStore();

const server = new ApolloServer({
  context: async ({ req }) => {
    debugger;
    const auth = (req.headers && req.headers.authorization) || '';
    const email = Buffer.from(auth, 'base64').toString('ascii');
    if (!isEmail.validate(email)) return { user: null };

    const users = await store.users.findOrCreate({ where: { email }});
    const user = users && users[0] ? users[0] : null;

    return { user: { ...user.dataValues }};
  },
  typeDefs,
  resolvers,
  dataSources: () => ({
    launchAPI: new LaunchAPI(),
    userAPI: new UserAPI({ store })
  })
});

server.listen().then(({ url }) => {
  console.log(`???? Server ready at ${url}`);
});

由于我看到的错误是上下文的usernull 的结果,我想逐步通过context() 方法检查标题并查看它是否包含有效(编码)电子邮件;如您所见,我在该函数的开头设置了一个debugger 断点。

但是,当我运行node inspect src/index.js 时,我会立即进入调试器以获取IntrospectionQuery

如果我按下“恢复脚本执行”按钮,我会立即返回到相同的断点。

这与context()async 函数这一事实有关吗?如何使用调试器单步执行context() 方法?

【问题讨论】:

    标签: javascript node.js apollo apollo-server javascript-debugger


    【解决方案1】:

    最后,我只是使用console.log() 命令对其进行了调试。我不小心将authorization 放在“查询变量”部分而不是“HTTP 标头”部分。将其移至“HTTP 标头”会产生所需的结果:

    【讨论】:

      猜你喜欢
      • 2021-11-06
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2020-03-16
      • 1970-01-01
      • 2015-01-15
      相关资源
      最近更新 更多