💨
tRPCのExpress adapterでmutationのRequest Bodyを受け取る
tRPCの公式ドキュメントに沿ってExpress adapterでtRPCを構築したが、AWS LambdaにデプロイするとRequest Bodyを受け取ることができなかった
原因
Expressを使う場合はデフォルトでRequest Bodyはundifinedになる
By default, it is undefined, and is populated when you use body-parsing middleware such as express.json() or express.urlencoded().
解決策
trpcのmiddlewareを定義する前に、ボディパース用のmiddlewareを呼ぶ必要がある
const appRouter = t.router({
// [...]
});
const app = express();
+ app.use(express.json()) // for parsing application/json
+ app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded
app.use(
'/trpc',
trpcExpress.createExpressMiddleware({
router: appRouter,
createContext,
}),
);
Discussion