Как я могу скрыть моментальные ошибки в nodejs?

Jesse_b спросил: 13 июня 2018 в 05:22 в: node.js

Я довольно новичок в обоих узлах и javascript, поэтому извиняюсь, если это усталый вопрос, но решения, которые я нашел в своих исследованиях до сих пор не работал для меня.

У меня есть следующая функция, которая проверяет правильность строки даты (полученной от пользователя как аргумент командной строки):

var checkDate = (d) => {
    if (isNaN(d) && moment(d).isValid()) {
        return moment(d);
    } else if (!isNaN(d)) {
        return moment(parseInt(d, 10));
    } else {
        console.error(`Error! ${d} is not a valid date string.`);
        process.exit(1);
    };
};

Проблема в том, что если строка not допустимая дата, moment(d).isValid() выдает ошибку. Я хотел бы не видеть эту ошибку, поскольку она действительно не очень полезна, и я все равно бросаю ее под другое.

Есть ли способ подавить ошибку, вызванную moment().isValid()?

1 ответ

Есть решение
Marcos Casagrande ответил: 13 июня 2018 в 05:34

Это проблема с moment, которая выведет предупреждение об устаревании, когда предоставленное значение не находится в распознанном формате RFC2822 или ISO.

Чтобы избежать предупреждения, создайте резервную копию function:

const moment = require('moment');moment.createFromInputFallback = function (config) {
    config._d = new Date(NaN);
}const checkDate = (d) => {
    if (isNaN(d) && moment(d).isValid()) {
        return moment(d);
    } else if (!isNaN(d)) {
        return moment(parseInt(d, 10));
    } else {
        console.error(`Error! ${d} is not a valid date string.`)
        process.exit(1);
    };
};

Или вы можете подавить это предупреждение напрямую:

moment.suppressDeprecationWarnings = true;

Дополнительное видео по вопросу: Как я могу скрыть моментальные ошибки в nodejs?

Наследование от ошибок Error

Handling Errors & Improving the Project Setup | Creating a REST API with Node.js

try, catch, finally, throw - error handling in JavaScript