如何解决在节点中将循环结构转换为JSON?

时间:2019-02-27 17:07:36

标签: node.js

我正在观看一门课程,该课程展示了如何使用自定义配置(例如颜色或根据您的环境模式,是否显示日志)制作console.log。

但是我不断收到错误TypeError: Converting circular structure to JSON 而且我不知道为什么会这样以及如何解决。

在这个过程中,这很好,但是对我来说不是。

节点版本=> v8.11.2

require('colors')
const _ = require('lodash')

const config = require('../config/config')

const noop = () => { }

const consoleLog = config.logging ? console.log.bind(console) : noop

const logger = {
    log: () => {
        const args = _.toArray(arguments)
            .map(arg => {
                if (typeof arg === 'object') {
                    let str = JSON.stringify(arg, 2)
                    return str.magenta
                } else {
                    arg += ''
                    return arg.magenta
                }
            })
        consoleLog.apply(console, args)
    }
}

module.exports = logger

Edit1:arguments可以是任何东西,因为logger将用于在控制台中记录具有不同颜色的内容。

logger.log('some thing you want to log')

1 个答案:

答案 0 :(得分:2)

logger.log()是一个箭头函数,因此arguments不是此函数的参数(请参见Arrow functions: No binding of arguments),而是父函数的参数,在这种情况下为Node.js wrapper function编译模块并具有带有循环依赖项的参数。

尝试在此处使用常用功能:

const logger = {
  log() {
    // ...
  }
};