Api возвращая 404 на производство - PullRequest
0 голосов
/ 03 марта 2020

У меня есть следующее приложение. js, и я пытаюсь создать API. Когда я запускаю его как разработку, вызывается API, но когда я запускаю его с помощью next start, я получаю ошибку 404 при вызове API.

Вот соответствующий сервер. js код:

app.prepare().then(() => {
    require('./server/startup/routes')(server);

    server.get('*', (req, res) => {
        return handle(req, res);
    });

    const PORT = process.env.PORT || 5000;

    server.listen(PORT, err => {
        if (err) throw err;
        console.log(`> Read on http://localhost:${PORT}`);
    });
});

Вот файл маршрутов

module.exports = app => {
    app.use('/api/something-cool', cool);
};

Классный файл:

const express = require('express');
const router = express.Router();

router.post('/', async (req, res) => {
    ...Code
    res.send({ status: 'ok' });
});

module.exports = router;

Маршрут API /something-cool работает, когда я запускаю nodemon, но когда я запускаю следующий запуск , он возвращает ошибку 404. Что я делаю не так и как я могу это исправить?

1 Ответ

1 голос
/ 03 марта 2020

Вы используете пользовательский сервер (express) поверх Next. js для настройки маршрутов. Это означает, что сначала вам нужно создать приложение Next. js, а затем запустить файл server.js для обслуживания приложения.

Вариант 1:

Сначала строит производственное приложение

next build

Затем запустите server.js файл:

NODE_ENV=production node server.js

подробнее здесь https://github.com/zeit/next.js/tree/master/examples/custom-server-express

Опция 2:

Существует также опция для создания маршрута API в Next. js Приложение без использования пользовательского сервера.

См. https://github.com/zeit/next.js/tree/master/examples/api-routes для получения дополнительной информации о том, как это сделать.

...