エラー
#####① body-parser未指定
これは、あるpostリクエストで走る処理です。
routeAction: async (req: Express.Request, res: Express.Response) => {
console.log(req.body) // undefinedが返る。。
}
適切なbodyを込めてpostリクエストすると、以下のようなエラーが。
(node:42936) UnhandledPromiseRejectionWarning: ValidationError: set validation failed: title: Path title
is required.
(個人的に)必須設定にしていたtitle
パラメータがbodyに入ってないよ、と言われたので、じゃあ何が入ってるんだとreq.bodyを出力してみると、
なんとreq.body自体がundefined..
適切なbodyをリクエストで込めているのに。
#####②body-parser指定したが、指定タイミングミス
https://expressjs.com/en/4x/api.html#req.body
恐らくexpressで受け取れる形でリクエストに込めたbodyがうまくパースされて無いのではということで、
expressにbody-parse設定してみたが解決せず。.
import Express from 'express'
const app = Express();// create server
app.use('/', routeAction);// パス指定
// この行を追記
app.use(Express.json());// body-parser settings
// start server
const port = 3000;
app.listen(port, () => {
console.log('server start');
});
解決方法: body-parserをパスより前に指定する。
どうやら、パース設定はパス指定時に確定されてしまうようでした。
ということで、パス指定前にbody-parserを設定することで解決。
ドキュメントから根拠は探せてはいないのですが。。
import Express from 'express'
const app = Express();// create server
// パス指定より前に指定する。
app.use(Express.json());// body-parser settings
app.use('/', routeAction);// パス指定
// start server
const port = 3000;
app.listen(port, () => {
console.log('server start');
});