Почему console.log дает номер строки, а console.error - нет? - PullRequest
0 голосов
/ 09 мая 2020

Как записать ошибку в JavaScript с номером строки? console.error дает номер строки index.js:1, а console.log дает правильный номер строки.

Есть ли способ изменить console.error для автоматического предоставления номера строки или другого способа регистрации ошибок?

Изменить: я использую ReactJS и response-redux.

const messageState = createSlice({
    name: 'messageState',
    initialState: {
        currentMessage: "No action has been selected"
    },
    reducers: { },
    extraReducers: {

        [recordAction]: (state, action) => {
            switch(action.payload.action) {
                case "ACTION1":
                    state.currentMessage = SELECT_ACTION1;
                    break;
                case "ACTION2":
                    state.currentMessage = SELECT_ACTION2;
                    break;
                default:
                    console.error(`messageState recordAction: Invalid action: ${action.payload.action}`);
                    return;
            }
        },

        [recordActionPosition]: (state, action) => {

            let qPos = action.payload.position.qPos;
            let rPos = action.payload.position.rPos;

            let actor = Global.entityList[action.payload.actorID];

            switch(action.payload.action) {
                case "ACTION1":
                    state.currentMessage = ACTION1_MESSAGE(actor.name, undefined, qPos, rPos);
                    break;
                case "ACTION2":
                    state.currentMessage = ACTION2_MESSAGE(actor.name, qPos, rPos);
                    break;
                default:
                    console.error(`messageState recordActionPosition: Invalid action: ${action.payload.action}`);
                    return;
            }
        }
    }
})

Сообщение об ошибке: messageState recordActionPosition: Invalid action: undefined ... index.js:1

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Я подозреваю, что вы говорите о том, как сообщение появляется в консоли браузера. Браузер показывает имя файла / номер строки, чтобы помочь вам во время разработки, чтобы показать, где произошла ошибка. Это реализация браузера console.error, которая добавляет номер строки. Использование console.log просто выводит текст, но вызов error делает его более полезным для определения места возникновения ошибки.

Номер строки отображается как index.js:1, потому что ваш источник, вероятно, был помещен через препроцессор, и к тому времени, когда браузер запускает код, все это одна строка. Мы не видим, как ваш код упакован перед запуском (веб-пакет?), Поэтому трудно дать вам совет, кроме этого.

Также было бы хорошо понять, почему вы хотите показывать номера строк в своем исходном коде код. Если это только во время разработки, то уникальности текста сообщения достаточно, чтобы определить, какая это была строка. Если это не для целей отладки, зачем пользователям знать номера строк в вашем исходном коде?

0 голосов
/ 09 мая 2020

Попробуйте ограничить использование console.error и вместо этого попробуйте throw new Error() (но будьте осторожны, он действует как оператор возврата)

Также. Пожалуйста, поделитесь своим кодом. Трудно понять, что с ним не так, когда мы его не видим.
Вы используете уменьшенный файл? Это может быть проблемой.
Используете ли вы Angular, React или какой-либо другой фреймворк? Может вызвать проблему.
И миллионы других возможных причин.

Альтернативное решение: добавьте к каждой ошибке печати функцию, от которой она исходит, чтобы вы могли найти, где искать и что ее вызвало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...