Как развернуть сервер express. js на Netlify - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь развернуть в Netlify приложение стека Vue. js, Node, Express, MongoDB (MEVN). Я успешно развернул интерфейс приложения в Netlify и сейчас пытаюсь развернуть сервер express, основываясь на следующем примере serverless-http: https://github.com/neverendingqs/netlify-express/blob/master/express/server.js

Я настроил мой сервер для включения пакета serverless-http:

сервер. js

const express = require('express');
const app = express();
const serverless = require('serverless-http');
const bodyParser = require('body-parser');
const cors = require('cors');
const mongoose = require('mongoose');
const config = require('./DB.js');
const postRoute = require('./routes');

mongoose.connect(config.DB, { useNewUrlParser: true, useUnifiedTopology: true }).then(
  () => { console.log('Database is connected') },
  err => { console.log('Can not connect to the database'+ err)}
);

app.use(cors());
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

app.use('/messages', postRoute);

app.use('/.netlify/functions/server', router);  // path must route to lambda
app.use('/', (req, res) => res.sendFile(path.join(__dirname, '../public/index.html')));


module.exports = app;
module.exports.handler = serverless(app);

маршруты. js

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

// Require Post model in our routes module
let Post = require('./post.model');

// Defined store route
postRoutes.route('/add').post(function (req, res) {
  let post = new Post(req.body);
  post.save()
    .then(() => {
      res.status(200).json({'business': 'business in added successfully'});
    })
    .catch(() => {
      res.status(400).send("unable to save to database");
    });
});

// Defined get data(index or listing) route
postRoutes.route('/').get(function (req, res) {
    Post.find(function(err, posts){
    if(err){
      res.json(err);
    }
    else {
      res.json(posts);
    }
  });
});

module.exports = postRoutes;

Затем я повторно развернул свой приложение для Netlify, но сервер, кажется, не работает в Netlify. Этот сервер находится в папке в проекте root моего vue. js приложения. Должен ли я вместо этого запустить сервер как отдельный сайт в Netlify? Если нет, что я должен сделать, чтобы сервер работал при развертывании в Netlify?

...