Javascript 如何调试Apollo服务器';什么是上下文功能?
我试图遵循GraphQL教程(),但在尝试预订旅行时,我在操场上遇到了一个错误,堆栈跟踪如下所示:Javascript 如何调试Apollo服务器';什么是上下文功能?,javascript,node.js,apollo,apollo-server,javascript-debugger,Javascript,Node.js,Apollo,Apollo Server,Javascript Debugger,我试图遵循GraphQL教程(),但在尝试预订旅行时,我在操场上遇到了一个错误,堆栈跟踪如下所示: "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.
"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
()使用异步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('./数据源/用户');
const isEmail=require('isEmail');
const store=createStore();
const server=新服务器({
上下文:异步({req})=>{
调试器;
const auth=(req.headers和&req.headers.authorization)| |“”;
const email=Buffer.from(auth,'base64').toString('ascii');
if(!isEmail.validate(email))返回{user:null};
const users=wait store.users.findOrCreate({where:{email}});
const user=users&&users[0]?users[0]:null;
返回{user:{…user.dataValues}};
},
typeDefs,
解析器,
数据源:()=>({
launchAPI:新的launchAPI(),
userAPI:newuserapi({store})
})
});
server.listen().then({url})=>{
console.log(`最后,我只是使用console.log()
命令对其进行了调试。我不小心将authorization
放在了“查询变量”部分,而不是“HTTP标头”部分。将其移动到“HTTP标头”会产生所需的结果: