【问题标题】:How do I find what moment() constructor throws a deprecation error如何找到 moment() 构造函数引发弃用错误
【发布时间】:2018-12-20 15:39:27
【问题描述】:

在少数几个地方,我使用moment.js 来获取各种输入并将它们转换为矩对象。

在某些地方我得到了

“Moment 构造函数回退到 JS 日期...”

这里多次提到的警告。我了解问题和解决方案,但我的问题是如何识别moment() 用法的哪个 实例是问题所在。

是否有任何合理的方法来跟踪哪个实例是有问题的?

注意:我正在使用的 JS 库之一也可能以有问题的方式调用 moment() - 它不一定直接在我的代码中。

【问题讨论】:

标签: javascript google-chrome momentjs


【解决方案1】:

添加一个钩子:

moment.deprecationHandler = () => {debugger}

或者将警告升级为错误:

moment.deprecationHandler = (_,msg) => {throw new Error(msg)}

这似乎有些无证。如何找到这个?当我触发警告时,我在 Chrome 中看到了堆栈跟踪:

> moment('20 Dec 2018')
global.js:293 Deprecation warning: value provided is not in a recognized […]
Error
    at Function.createFromInputFallback (https://momentjs.com/static/js/global.js:320:98)
[…]

看看这个函数里面有什么:

> moment.createFromInputFallback
ƒ () {
        if (hooks.deprecationHandler != null) {
            hooks.deprecationHandler(null, msg);
        }
        if (firstTime) {
            var args = [];
           …
> moment.deprecationHandler
null

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 2017-08-31
    • 2016-11-24
    • 1970-01-01
    • 2019-02-04
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多