簡體   English   中英

如何將 express.js 服務器部署到 Netlify

[英]How to deploy express.js server to Netlify

我正在嘗試將 Vue.js、Node、Express、MongoDB (MEVN) 堆棧應用程序部署到 Netlify。 我成功地將應用程序的前端部署到 Netlify,現在我正在嘗試根據以下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 中運行。 該服務器位於我的 vue.js 應用程序的項目根目錄中的文件夾中。 我應該在 Netlify 中將服務器作為單獨的站點運行嗎? 如果沒有,我應該怎么做才能讓服務器在 Netlify 中部署時運行?

已經有一段時間了,但在這里。

Netlify 托管適用於 Jamstack,正如他們所說,即只有靜態文件,在服務器上沒有處理。 這個想法是利用其他機制來動態獲取您的數據,例如托管在其他地方的 API,您可以直接從瀏覽器查詢,或者在您構建站點時進行查詢。

很可能您實際上必須將 express.js 應用程序部署為 Netlify 函數。 查看Netlify 關於在其函數上運行 express 應用程序的博客文章

我有一個類似的問題,只是我的服務器不會在本地連接到路由,我的代碼和你的代碼之間的主要區別是我必須這樣做

const router = express.Router()

然后切換app.use()router.use()

就像我說的,這是當本地主機說“無法獲取 /* 定義的路徑 */”

PS 作為旁注,您在最近的 express 中不需要顯式 bodyParser,而 express.json() 可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM