Heroku与本地运行方式不同

问题描述 投票:0回答:1

我创建了一个具有快速后端的Nuxt应用,并且我已经注册了一些api路由。当我在本地以生产npm run build && npm run start运行时,效果很好。Here it is working locally但是,当我使用heroku heroku local web运行它时,所有API路由都会抛出404。Here it doesn't work with heroku

这是我的服务器代码

require('dotenv').config();
const express = require('express');
const consola = require('consola');
const { Nuxt, Builder } = require('nuxt');
const bodyParser = require('body-parser');
const session = require('express-session');
const mongoose = require('mongoose');
const cors = require('cors');

mongoose.Promise = Promise;
mongoose.set('useFindAndModify', false);
mongoose.connect(process.env.MONGODB_CONNECTION_STRING);

const app = express();
// Import and Set Nuxt.js options
const config = require('../nuxt.config.js');
config.dev = process.env.NODE_ENV !== 'production';

async function start() {
  // Init Nuxt.js
  const nuxt = new Nuxt(config);

  const { host, port } = nuxt.options.server;

  // Build only in dev mode
  if (config.dev) {
    const builder = new Builder(nuxt);
    await builder.build();
  } else {
    await nuxt.ready();
  }

  app.use('/api', require('./routes'));

  // session
  app.use(
    session({
      sessionDataHere
    })
  );

  // enable cors
  app.use(cors());

  // body parser
  app.use(bodyParser.json());

  app.use((error, req, res, next) => {
    console.error(error.response);
    res.status(500).send(error);
  });

  // Give nuxt middleware to express
  app.use(nuxt.render);

  // Listen the server
  app.listen(port, host);

  consola.ready({
    message: `Server listening on http://${host}:${port}`,
    badge: true
  });
}
start();

这是我的路线索引

const { Router } = require('express');
const authRouter = require('./auth');
const videoRouter = require('./video');

const baseRouter = Router();

baseRouter.use('/', authRouter);
baseRouter.use('/', videoRouter);
baseRouter.get('/test', (req, res) => res.send('This is working!'));

module.exports = baseRouter;

也许我在heroku配置上缺少什么?谢谢!

javascript heroku nuxt.js
1个回答
0
投票

好吧,我修复了它。我必须更改我的procfile。它正在运行nuxt start而不是npm start,因此它没有运行任何服务器端代码

© www.soinside.com 2019 - 2024. All rights reserved.