Next.js、Express.js应用程序';s API在开发中运行,但在生产中处于404状态

Next.js、Express.js应用程序';s API在开发中运行,但在生产中处于404状态,express,nginx,next.js,production,Express,Nginx,Next.js,Production,我已经在生产环境中部署了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

我已经在生产环境中部署了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页面和ExpressAPI在开发中都能正常工作。我不需要做任何事情,但在生产页面上做工作,但所有API都显示状态404。如何修复

您使用的是什么生产环境?如果您使用的是AWS EC2,您必须公开一个端口,并使用pm2或某些脚本将该端口映射到生产服务器端口,以保持环境的运行和有效性。我已经部署在digital ocean的droplet上,整个应用程序都在端口3000上运行。我使用pm2来保持服务器运行。但这不是问题。问题出在app.prepare()函数内部。在这里,我定义了我的所有页面路径,就像我在问题中解释的那样。我可以正常看到的页面,我所有的api都有一个前缀'/api/v1'。当我来访时,让我们说。上面说是404,但是对于nextjs页面,它工作得非常好。我已经完成了npm运行构建,然后是下一个开始