我有一个与NextJS一起使用的自定义快递服务器。
当我在本地开发时,一切正常,但是当我部署到Vercel时,每当尝试访问后端API时,我都会捕获404。
出什么问题了?这是我的server.ts
:
import express from 'express';
import next from 'next';
import bodyParser from 'body-parser';
import { connectDbs } from './config/db';
import { listingsRouter } from './routes';
const PORT = process.env.PORT || 3003;
const dbs = ['mydb'];
const dev = process.env.NODE_DEV !== 'production';
const nextApp = next({ dev });
const handle = nextApp.getRequestHandler();
const applyMiddleware = (app) => {
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
};
const applyRoutes = (app) => {
app.use('/api/listings', listingsRouter);
};
const startServer = async () => {
await nextApp.prepare();
const app = express();
applyMiddleware(app);
applyRoutes(app);
app.get('*', (req, res) => handle(req, res));
await connectDbs(dbs);
app.listen(PORT, () => console.log(`App listening on port ${PORT}`));
};
startServer();
答案 0 :(得分:1)
用于自定义服务器的Next.js文档:
自定义服务器不能部署在Vercel上,该平台专门用于Next.js。
即使您无法部署自定义服务器,也通常不需要这样做,因为Next.js使用/pages/api
目录支持无服务器功能。
来源:API Routes
也请参阅本指南,其中介绍了如何将自定义Next.js服务器转换为路由: