Node.js graphql错误消息获取完整http响应

Node.js graphql错误消息获取完整http响应,node.js,apollo-client,winston,Node.js,Apollo Client,Winston,我正在用apollo客户端测试Graphql端点。发生错误时,HTTP响应如下所示 { "data": { "loginEmail": null }, "errors": [ { "message": "VALIDATION_FAILED", "locations": [ { "line": 43, "column": 3 } ], "path":

我正在用apollo客户端测试Graphql端点。发生错误时,HTTP响应如下所示

{
  "data": {
    "loginEmail": null
  },
  "errors": [
    {
      "message": "VALIDATION_FAILED",
      "locations": [
        {
          "line": 43,
          "column": 3
        }
      ],
      "path": [
        "loginEmail"
      ],
      "errors": [
        {
          "model": "user",
          "field": "password",
          "code": "INVALID",
          "extra": null
        }
      ]
    }
  ]
}
上面的消息被Chrome开发工具捕获。但是,如何使用阿波罗客户端捕获此完整响应错误消息呢

对于以下代码,我得到的只是
GraphQL错误:验证失败

async function loginEmail(email, password) {
  // ...
  try {
    const res = await gqclient.mutate({ // gqclient comes from `new ApolloClient({...})`
      mutation,
      variables: { 
        "email": email,
        "password": password
      }
    })
    return res
  } catch (err) {
    logger.debug(err)   // all I got is `GraphQL error: VALIDATION_FAILED`
    return err
  }
}
有什么想法吗

谢谢


--------更新--------

感谢@CGBCBC的提醒!我的
winston
配置错误

但我不知道为什么

这是正常的(
logger.info(err)
可能会收到完整的响应消息):

这不好:

const { createLogger, format, transports } = require('winston')

const logger = createLogger({
  level: 'debug',
  format: format.combine(
    format.timestamp({format: 'YYYY-MM-DDTHH:mm:ss'}),
    format.printf(info => {
      return JSON.stringify({
        timestamp: info.timestamp, 
        level: info.level, 
        message: info.message})
    })
  ),
  transports: [new transports.File({filename: 'logs/new_combined.log'})]
})

// output
// {
//    "timestamp":"2019-02-26T15:36:32",
//    "level":"info",
//    "message":"GraphQL error: VALIDATION_FAILED"
// }

您正在使用的记录器库是什么?感谢@CGBCBC的提醒!更改为
console.log后,我收到了完整的错误消息
winston
是我使用的。至于您的更新,日志文件中
format.json
version和
format.printf
version的记录器输出是什么?在有问题的部分更新@CGBCBC非常同意。我相信你现在可以通过访问
info.graphQLErrors
中的
line
column
等来构建一条漂亮的消息。你正在使用的记录器库是什么?感谢@cgbcbc的提醒!更改为
console.log后,我收到了完整的错误消息
winston
是我使用的。至于您的更新,日志文件中
format.json
version和
format.printf
version的记录器输出是什么?在有问题的部分更新@CGBCBC非常同意。我相信您现在可以通过访问
info.graphQLErrors
中的
等来构建一条漂亮的消息。
const { createLogger, format, transports } = require('winston')

const logger = createLogger({
  level: 'debug',
  format: format.combine(
    format.timestamp({format: 'YYYY-MM-DDTHH:mm:ss'}),
    format.printf(info => {
      return JSON.stringify({
        timestamp: info.timestamp, 
        level: info.level, 
        message: info.message})
    })
  ),
  transports: [new transports.File({filename: 'logs/new_combined.log'})]
})

// output
// {
//    "timestamp":"2019-02-26T15:36:32",
//    "level":"info",
//    "message":"GraphQL error: VALIDATION_FAILED"
// }