如何对nodejs进行故障排除?

时间:2018-08-15 13:25:08

标签: node.js request cgi

我有一个奇怪的问题,需要解决它。

在我的Web应用程序中,我使用了请求模块从数据库中获取数据。但是,请求功能未转到api路由设置(所有其他请求均正常运行)。我如何追踪它以找出它的来源?

我回来的错误消息是:

{
  errors: {
    'confirmed_by.id': {
      message: 'Cast to ObjectID failed for value "ending" at path "confirmed_by.id"',
      name: 'CastError',
      stringValue: '"ending"',
      kind: 'ObjectID',
      value: 'ending',
      path: 'confirmed_by.id',
      reason: [Object],
    },
  },
  _message: 'order validation failed',
  message:
    'order validation failed: confirmed_by.id: Cast to ObjectID failed for value "ending" at path "confirmed_by.id"',
  name: 'ValidationError',
}

有人对此有任何想法吗?提前致谢!

理查德

2 个答案:

答案 0 :(得分:0)

当您尝试使用_id为猫鼬模型创建_id: new ObjectId(someVal)时,会发生此错误。在这里,您必须确保someVal应该是24个字符的十六进制值。否则,将引发该错误。如果说,您将someVal设置为18个字符,然后添加一些静态字符(例如aabbcc),将其增加6个字符以使其变为24个字符,最重要的是,所有字符必须为十六进制字符。

答案 1 :(得分:0)

有几种方法可以根据需要执行的操作或遇到的问题来调试节点应用程序。

如果您使用的是较新的节点版本(v6.3 +),则始终可以使用--inspect--inspect-brk启动应用程序,这将使您能够使用Chrome浏览器检查节点代码。有关更多详细信息,请访问https://nodejs.org/api/debugger.html#debugger_advanced_usage。如果您使用的是旧版本,则可以尝试使用node-inspector

另一个非常有用的工具是类似于CharlesProxy的网络检查器(名称正确吗?)。这样,您可以将节点应用程序配置为代理任何http请求(配置取决于您可能使用的库),并检查节点应用程序与世界其他地方之间的流量。