Как исправить «ОШИБКА _HTTP_INVALID_STATUS_CODE» в узле?

У меня есть какая-то ошибка, и я понятия не имею, что это значит, какие-нибудь идеи, пожалуйста? Это ошибка: Я понятия не имею, что происходит, потому что я никогда раньше не получал такой ошибки, и я использую res.redirect так же, как всегда. Я узнал, что вы должны использовать res. визуализировать, но я хочу, чтобы меня перенаправляли на страницу, а не отображать страницу...


> Sun, 10 Feb 2019 18:47:15 GMT express deprecated res.redirect(url,
> status): Use res.redirect(status, url) instead at
> routes\placeorder.js:50:17 RangeError [ERR_HTTP_INVALID_STATUS_CODE]:
> Invalid status code: [object Object]
>     at ServerResponse.writeHead (_http_server.js:208:11)
>     at ServerResponse.writeHead (C:\Users\Petr\WebstormProjects\BakalarskaPrace\node_modules\on-headers\index.js:55:19)
>     at ServerResponse.writeHead (C:\Users\Petr\WebstormProjects\BakalarskaPrace\node_modules\on-headers\index.js:55:19)
>     at ServerResponse._implicitHeader (_http_server.js:199:8)
>     at write_ (_http_outgoing.js:585:9)
>     at ServerResponse.write (_http_outgoing.js:567:10)
>     at writetop (C:\Users\Petr\WebstormProjects\BakalarskaPrace\node_modules\express-session\index.js:290:26)
>     at ServerResponse.end (C:\Users\Petr\WebstormProjects\BakalarskaPrace\node_modules\express-session\index.js:351:16)
>     at ServerResponse.redirect (C:\Users\Petr\WebstormProjects\BakalarskaPrace\node_modules\express\lib\response.js:947:10)
>     at putOrderToDBAndRedirect (C:\Users\Petr\WebstormProjects\BakalarskaPrace\routes\placeorder.js:50:17)
> _http_server.js:208
>     throw new ERR_HTTP_INVALID_STATUS_CODE(originalStatusCode);
>     ^
> 
> RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code:
> [object Object]
>     at ServerResponse.writeHead (_http_server.js:208:11)
>     at ServerResponse.writeHead (C:\Users\Petr\WebstormProjects\BakalarskaPrace\node_modules\on-headers\index.js:55:19)
>     at ServerResponse.writeHead (C:\Users\Petr\WebstormProjects\BakalarskaPrace\node_modules\on-headers\index.js:55:19)
>     at ServerResponse._implicitHeader (_http_server.js:199:8)
>     at write_ (_http_outgoing.js:585:9)
>     at ServerResponse.end (_http_outgoing.js:709:5)
>     at writeend (C:\Users\Petr\WebstormProjects\BakalarskaPrace\node_modules\express-session\index.js:261:22)
>     at Immediate.ontouch (C:\Users\Petr\WebstormProjects\BakalarskaPrace\node_modules\express-session\index.js:348:11)
>     at processImmediate (timers.js:632:19)
> 
> Process finished with exit code 1


const putOrderToDBAndRedirect = async(res,userId,serviceObj,
                                      ordStart,ordEnd) =>{
    try{
        const result = await pool.query('SELECT id ' +
                                            'FROM orders ' +
                                            'WHERE ($1,$2) OVERLAPS (ord_start,ord_end)',
                                            [ordStart,ordEnd]);
        if (isOverlaping(result)){
            console.info('redirect to page with orders');
            res.redirect('/objednat')
        }else{
            await pool.query('INSERT INTO orders (ord_entered,ord_start,user_id,service_id,ord_end)' +
                                ' VALUES($1,$2,$3,$4,$5)',
                                [new Date(),ordStart,userId,serviceObj.id,ordEnd]);
            const resultArr = await pool.query('SELECT firstname,lastname,phonenumber ' +
                                            'FROM users ' +
                                            'WHERE ' +
                                            'id = $1',[userId]);

            console.info(resultArr.rows[0]);
            const obj = constructOrderObj(serviceObj,ordStart,resultArr.rows[0]);
            res.redirect('/objednano',{orderObj:obj});
        }
    }catch(err){
        console.error(err);
    }

};
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
6 656
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы вызываете res.redirect('/objednano',{orderObj:obj});, но это не соответствует подпись функции для res.redirect(), который принимает необязательный статус в качестве первого аргумента и путь в качестве второго аргумента (или путь в качестве первого аргумента, если есть только один аргумент, и в этом случае статус по умолчанию будет 302 ).

Мне непонятно, что вы там пытаетесь сделать, если честно. Но проблема в этой линии. Он обрабатывает первый аргумент как код состояния, а '/objednano', очевидно, является недопустимым состоянием HTTP. Таким образом, сообщение об ошибке жалуется, что статус HTTP недействителен.

Привет, спасибо, теперь я глуп, я заметил, что должен использовать res.render('/objednano',{orderObj:obj}). когда я хочу передать некоторые объекты для своего представления .ejs, над которым я работал весь день, мне, вероятно, следует сделать перерыв. Большое спасибо

Petr M 10.02.2019 20:21

Если вы используете res.redirect для отправки ответа клиенту, он будет иметь код состояния 302 (что в основном является перенаправлением), что означает, что текущие данные, которые вам нужны, доступны не в текущем местоположении, а в другом месте, поскольку перенаправлены

Если вы пытаетесь получить этот ресурс из внешнего приложения или клиента (например, с помощью fetch или XMLHTTPresponse, вы можете получить такую ​​ошибку)

Наилучший способ — явно сообщить express (или объекту response), что вы пытаетесь отправить ответ json для этот запрос.

Другие вопросы по теме