【问题标题】:How to solve Converting circular structure to JSON in node?如何解决在节点中将循环结构转换为 JSON?
【发布时间】:2019-02-27 17:07:36
【问题描述】:

我正在观看一门课程,该课程展示了如何使用自定义配置制作 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')

【问题讨论】:

  • 请告诉我们arguments的结构。
  • 为什么投反对票?我的问题有什么问题?
  • Vsemozhetbyt 是对的。只是想让你 console.log 参数来验证。

标签: node.js


【解决方案1】:

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

这里尝试使用常用函数:

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

【讨论】:

  • 谢谢,很好的回答和解释
  • 万一有人再次看到这个,你可以使用log(){}log: function(){},都是一样的
猜你喜欢
  • 1970-01-01
  • 2020-09-14
  • 2020-02-03
  • 2021-10-21
  • 2020-09-18
  • 2022-01-11
  • 2014-01-21
  • 1970-01-01
  • 2016-01-11
相关资源
最近更新 更多