首页 > 解决方案 > Apollo 服务器没有在节点控制台上打印错误

问题描述

我有一个 Apollo 服务器:

45 const server = new ApolloServer({
46   resolvers,
47   typeDefs, 
48   debug: true,
49 })

在客户端,我收到一个 js 错误,例如:

扩展:{code:“INTERNAL_SERVER_ERROR”,...}
位置:[{line:3,column:7}]
0:{line:3,column:7}
消息:“无法读取未定义的属性'拆分'”

但是服务器运行的节点控制台没有打印任何东西:

node:63865) DeprecationWarning: 当前的 URL 字符串解析器已被弃用,并将在未来的版本中删除。要使用新的解析器,请将选项 { useNewUrlParser: true } 传递给 MongoClient.connect。服务器在http://localhost:4001/处准备就绪 Mongoose 默认连接打开到 mongodb://localhost/gepick (node:63865) DeprecationWarning: collection.ensureIndex 已被弃用。请改用 createIndexes。(节点:63865)[DEP0005] DeprecationWarning:由于安全性和可用性问题,不推荐使用 Buffer()。请改用 Buffer.alloc()、Buffer.allocUnsafe() 或 Buffer.from() 方法

标签: node.jsgraphqlapolloapollo-server

解决方案


根据官方文档:https ://www.apollographql.com/docs/apollo-server/data/errors/#for-the-client-response

初始化时ApoloServer,添加formatError: (err) => {...}属性会打印出错误,见下图:

const server = new ApolloServer({
  typeDefs,
  resolvers,
  formatError: (err) => {
    console.error(err);
    return err;
  },
});

推荐阅读