簡體   English   中英

如何修復 Node 中的“ERROR _HTTP_INVALID_STATUS_CODE”?

[英]How to fix 'ERROR _HTTP_INVALID_STATUS_CODE' in Node?

我有一些錯誤,我不知道這是什么意思,請問有什么想法嗎? 這是錯誤:我不知道發生了什么,因為我以前從未遇到過這樣的錯誤,而且我像往常一樣使用 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.log('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.log(resultArr.rows[0]);
            const obj = constructOrderObj(serviceObj,ordStart,resultArr.rows[0]);
            res.redirect('/objednano',{orderObj:obj});
        }
    }catch(err){
        console.error(err);
    }

};

您正在調用res.redirect('/objednano',{orderObj:obj}); 但這與res.redirect()的函數簽名不匹配,該函數簽名將可選狀態作為第一個參數,將路徑作為第二個參數(如果只有一個參數,則將路徑作為第一個參數,在這種情況下,狀態將默認為302 )。

老實說,我不清楚你想在那里做什么。 但那條線是問題所在。 它將第一個參數視為狀態代碼,而'/objednano'顯然是一個無效的 HTTP 狀態。 所以錯誤信息是抱怨 HTTP 狀態無效。

如果使用res.redirect將響應發送給客戶端,它的狀態碼為302 (基本上是重定向)表示您需要的當前數據在當前位置不可用,而是在另一個位置如重定向

如果您嘗試從前端應用程序或客戶端獲取此資源(例如使用 fetch 或 XMLHTTPresponse,那么您可能會收到這樣的錯誤)

最好的方法是明確告訴express (或response對象)您正在嘗試為此請求發送 json 響應

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM