apolloserver error handling
1、默认错误处理
const {
ApolloServer,
gql,
} = require('apollo-server');
const typeDefs = gql`
type Query {
readError: String
}
`;
const resolvers = {
Query: {
readError: (parent, args, context) => {
fs.readFileSync('/does/not/exist');
},
},
};
如果发生错误后,apollo server会自动向errors数组中添加一个错误信息,apollo server会自动在错误信息中添加一个extensions来显示错误信息。
如果不想显示错误信息,可以在server的构造函数中使用debug:false,或者将运行环境设置为production或者test
2、Codes
在extensions有一个code字段用来显示人可读的状态。
3、Augmenting error details
const {
ApolloServer,
UserInputError,
gql,
} = require('apollo-server');
const typeDefs = gql`
type Mutation {
userInputError(input: String): String
}
`;
const resolvers = {
Mutation: {
userInputError: (parent, args, context, info) => {
if (args.input !== 'expected') {
throw new UserInputError('Form Arguments invalid', {
invalidArgs: Object.keys(args),
});
}
},
},
};
增加invalidArgs参数
如果想要自定义错误可以使用
new ApolloError(message, code, additionalProperties);
Masking and logging errors
记录错误日志信息。
const server = new ApolloServer({
typeDefs,
resolvers,
formatError: error => {
console.log(error);
return new Error('Internal server error');
},
});
server.listen().then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});
浙公网安备 33010602011771号