【问题标题】:missing params in object - should be undefined对象中缺少参数 - 应该是未定义的
【发布时间】:2018-10-18 19:09:45
【问题描述】:

我有这个:

EventSubscription.prototype.subscribe = function(name, fn, filters, callback) {

    logger.debug('event subscriber subscribe:',{name,fn,filters});

};

我们在日志中得到了这个:

debug: event subscriber subscribe: {"name":"NotifyStaffUponReferralCreate"}

我觉得这很奇怪,因为即使我传递了未定义的参数,我也应该得到这个:

debug: event subscriber subscribe: {"name":"NotifyStaffUponReferralCreate", fn: undefined, filters: undefined}

有谁知道为什么未定义的参数不会出现在对象解构中?

我使用的是 Node 版本 v10.10.0

我做了一个小实验看看会发生什么:

const foo = undefined;
const bar = 1;

const fn = function(bar, foo) {
  console.log({foo,bar});
};

fn(bar);
fn(bar, foo);

我得到了:

{ foo: undefined, bar: 1 }
{ foo: undefined, bar: 1 }

我不知道发生了什么。

【问题讨论】:

  • logger.debug - 这是什么库?
  • 您检查过您的logger 代码吗?和console.log一样吗?有可能它会在记录参数之前“清理”参数......
  • 您的logger 似乎使用JSON.stringify(忽略函数和undefined 值)而不是util.inspect,就像console 那样。
  • 假设您使用的是 Winston……它使用 util.format 来转换对象。所以基本上:util.format('%j', {name,fn,filters}));,它不会包含未定义的值。
  • 哎呀,我还以为是这样的,是的,我们正在使用的是winston。

标签: javascript node.js ecmascript-6


【解决方案1】:

这是因为我正在为 Node.js 使用 Winston 日志记录包。

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 2020-10-27
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多