为什么TypeError上的JSON.stringify返回一个空对象
我正在使用节点4.2,并捕捉到一个错误,并使用JSON.stringify。 对于大多数对象,这工作正常。 但是,当引发[TypeError:callback不是函数]时,它返回一个空对象。 如果我console.log直接,它工作正常。
Mozilla的网页上说:
按照传统的转换语义,Boolean,Number和String对象在string化过程中被转换为相应的基本值。
try { ... } catch (err) { console.log('error: ' + JSON.stringify(err)) // outputs {} }
当你在TypeError上使用stringify
的时候,你会把没有enumerable
属性的对象string化。
所以,如果你这样做
var typeError = new TypeError("hey") for(var prop in typeError) { console.log(prop) // this does not run }
当你使用console.log
logging时,你使用的是valueOf
var typeError = new TypeError("hey") typeError.valueOf() // TypeError: hey(…)
此外,一个错误知道如何把自己变成一个string,所以这也是:
var typeError = new TypeError("hey") typeError.toString() // "TypeError: hey"
如果要logging使用普通日志无法看到的对象的属性,可以使用console.dir
对象。
当你在typeError
上做的typeError
,你会看到它有一个message
属性:
- 节点“readline”模块没有“结束”事件 – 当没有更多的行时,我该怎么做?
- 用System.js导入Angular 2应用程序中的visionmedia debug以及如何logging消息?
- RegEx不会在Gulp.js中执行
- 如何在Node.js中从MongoDB返回JSON?
- React-native:Undefined不是一个对象…当使用'react-native-tts'
- hogan.js +玉?
- 如何使用MongoDB从embedded到数组中的文件中删除属性?
- Node.jsasynchronous的瀑布()callback已被调用
- 如何通过邮差发送JSON到NodeJS Express服务器?