Heroku работает не так, как работает локально - PullRequest
0 голосов
/ 11 февраля 2020

Я создал приложение Nuxt с express бэкэндом и зарегистрировал некоторые маршруты API. Когда я запускаю локально как производство npm run build && npm run start, оно работает просто отлично. Здесь он работает локально Однако, когда я запускаю его с heroku heroku local web, все маршруты API выдают 404. Здесь это не работает с 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? Спасибо!

1 Ответ

0 голосов
/ 14 февраля 2020

Хорошо, я исправил это. Я должен был изменить свой профайл. Он работал nuxt start, а не npm start, поэтому на нем не было кода сервера

...