Node.js graphql错误消息获取完整http响应
我正在用apollo客户端测试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":
{
"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"
// }