首页 > 解决方案 > Next.js,Express.js 应用程序的 api 在开发中运行,但在生产中状态为 404

问题描述

我已经在生产环境中部署了 nextjs、expressjs 应用程序,但所有 api 都得到 404。我的页面运行良好


  var session = require('express-session');
  var passport = require('passport');
  const KnexSessionStore = require('connect-session-knex')(session);
  const knex  = require('./db/knex.js');
  const authMid = require('./config/utils')


  const app = express();
  app.use(compression())
  app.use(cookieParser());
  app.use(bodyParser.json());
  app.use(bodyParser.urlencoded({extended: false}));

  // sesstion
  const store = new KnexSessionStore({
    knex: knex,
    tablename: 'sessions' // optional. Defaults to 'sessions'
  });

  app.use(session({
    name: 'connect.sid',
    store: store,
    secret: 'somesupersecretkey',
    resave: false,
    saveUninitialized: false,
    cookie: {
        maxAge: 1000 * 60 * 60 * 24 * 7 
    },
    // cookie: { secure: false }
  }));


  app.use(passport.initialize());
  app.use(passport.session());

  require("./config/passport");
  require("./config/passport_fb");
  require("./config/passport_google");
  var routes = require('./routes/index');
  routes.mp_routes(app);

  // Server-side
  const route = pathMatch();


  // pages set up
  // private & public
  app.get('/', (req, res) => {
    return nextApp.render(req, res, '/index', req.query)
  })

  app.get('/questions', (req, res) => {
    return nextApp.render(req, res, '/questions', req.query)
  })

我的 routes/index.js 文件看起来像

module.exports.mp_routes = (app) => {
  app.use('/api/v1', questionsRoutes),
  app.use('/api/v1', answersRoutes)
}

所有 nextjs 页面和 express api 在开发中都可以正常工作。我不需要做任何事情,但在生产页面上确实可以工作,但所有 api 都说状态 404。我该如何解决

标签: expressnginxnext.jsproduction

解决方案


推荐阅读