部署到Vercel时NextJS抛出404

时间:2020-08-17 15:22:28

标签: javascript reactjs next.js vercel

我有一个与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();

1 个答案:

答案 0 :(得分:1)

用于自定义服务器的Next.js文档:

自定义服务器不能部署在Vercel上,该平台专门用于Next.js。

来源:Custom Server

即使您无法部署自定义服务器,也通常不需要这样做,因为Next.js使用/pages/api目录支持无服务器功能。

来源:API Routes

也请参阅本指南,其中介绍了如何将自定义Next.js服务器转换为路由:

来源:Server to Routes Guide