节点发布错误是什么样的对象?为什么node的控制台.log和JSON.stringify以不同的方式处理它?



console.log输出如下,

{ [error: syntax error at or near "step"]
  length: 86,
  name: 'error',
  severity: 'ERROR',
  code: '42601',
  detail: undefined,
  hint: undefined,
  position: '62',
  internalPosition: undefined,
  internalQuery: undefined,
  where: undefined,
  file: 'scan.l',
  line: '1001',
  routine: 'scanner_yyerror' }

但JSON。Stringify看不到错误的叙述部分,

{"长度":86年,"名字":"错误","严重程度":"错误","代码":"42601","位置":"62","文件":"scan.l","线":"1001","常规":"scanner_yyerror"}

我不知道如何得到这个"错误:列"未定义"不存在"阅读维基(https://github.com/brianc/node-postgres/wiki/Error-handling, http://nodejs.ru/doc/v0.4.x/stdio.html#console.log)

代码是这样的,

   client.query(selstring, function(err, result) {
   if(err){
     res.send(JSON.stringify(err));
     console.log(err);
   }else{

感谢

UPDATE: err.toString()显示error: syntax error at or near "step"

因为pg错误是标准Js error () obj的子类,因此基本错误"description"可以通过error .message…

console.log(new Error("hello world"));
[Error: hello world]
console.log(new Error("hello world").message);
hello world

你可以通过添加Error.prototype

来继承标准的Error对象。

见凯文的帖子我如何在JavaScript中创建一个自定义错误?

我一直在努力理解同样的事情很长一段时间了。

查看JSON.stringify(err)的输出,似乎对象有一个数组作为未命名的属性。如何创建具有匿名属性的对象呢?我曾经把这个搞砸了很长一段时间,但却找不到任何方法来构建任何可以从JSON.stringify生成类似结构的对象。

我发现了错误。message实际上可以访问字符串,但我真的不明白为什么,因为'message'在字符串化版本中不作为属性出现。如果'message'是err的属性,为什么它不会出现在stringify的输出中?如果不是,那么它从何而来?

第一步放控制台像

console.log (query.text);

也可参考

链接http://dailyjs.com/2011/09/26/heroku/

简单的修复方法是在连接中添加端口参数,即使它是默认端口。我也有同样的问题。我从这个github问题中找到了解决方案。

var pg_conn_conf = {
  username: 'user',
  pass: 'pass',
  port: 5432,
  host: 'localhost',
  db: 'mydb'
};

还有另一个stackoverflow答案,建议扩展错误。原型,幸运的是你不需要处理这个问题。但这是一个很好的技巧。

最新更新