![](/img/trans.png)
[英]How to deploy react, next js + express js app to 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.