如何将express.js服务器部署到Netlify

2024-06-23

我正在尝试将 Vue.js、Node、Express、MongoDB (MEVN) 堆栈应用程序部署到 Netlify。我成功地将应用程序的前端部署到 Netlify,现在正在尝试基于以下内容部署 Express 服务器serverless-http例子:https://github.com/neverendingqs/netlify-express/blob/master/express/server.js 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 应用程序的博客文章 https://www.netlify.com/blog/2018/09/13/how-to-run-express.js-apps-with-netlify-functions/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将express.js服务器部署到Netlify 的相关文章

随机推荐

  • 通过 connect 传递额外的参数

    是否可以通过槽传递变量以便我可以打印出某些文本 尝试将另一个函数中定义的变量 DiffP 传递给插槽 DiffP 根据选择的文件而变化 def addLineEdit self try self clearLayout self FileB
  • 在 MVC Core DI 中注册服务集合

    我有简单的策略课程 public class LinkQualifier ILinkQualifier private readonly IEnumerable
  • ES6 Promise 不更新 AngularJS DOM [重复]

    这个问题在这里已经有答案了 我无法理解角度分量范围 如果我做类似的事情 function myComponent this data Hello World let myModule angular module myModule myMo
  • Google AuthorizationCodeInstalledApp.authorize() 方法在取消身份验证时冻结

    我有一个 Java 应用程序 需要让用户授权我的应用程序访问 Google 服务 我有以下代码来显示和获取我需要的授权 GoogleAuthorizationCodeFlow flow new GoogleAuthorizationCode
  • SCM URL 相对于 POM 中的父 SCM URL

    我有一个由多个模块和子模块组成的 Maven 项目 我使用 SVN 来对源文件进行版本控制 短篇故事 如何在 POM 文件的 scm 属性中指定相对于其父文件的 URL 故事很长 有些模块及其子模块共享公共版本号 发布过程 有些则使用独立的
  • 增加和减少数字

    我有这个带有数字的文本 My numbers are 04 and 0005 My numbers are 05 and 0006 My numbers are 06 and 0035 My numbers are 07 and 0007
  • LibXML findnodes($query)

    我在使用这段代码时遇到了一些问题 my file xml news xml my parser XML LibXML gt new my doc parser gt parse file file my xpc XML LibXML XPa
  • 如何在 HBase 中预分割表

    我将数据存储在具有 5 个区域服务器的 HBase 中 我使用 url 的 md5 哈希作为我的行键 目前 所有数据仅存储在一台区域服务器中 所以我想预先分割区域 以便数据在所有区域服务器上统一传输 我希望通过行键的第一个字符将表分成五个区
  • 为什么 log4Net 中没有跟踪级别?

    我只是想知道为什么没有痕迹水平 http logging apache org log4net release sdk log4net Core Level html在 log4Net 中 这个级别似乎缺失 我有时觉得需要使用它 例如输出应
  • 传单中的地图标记闪亮

    我仍然是一名 R 新手 但我已经获得了一些关注 主要是因为我正在阅读这里的所有帖子 然而 我找不到有关此的任何信息 我追求的是 当用户单击传单中的标志时 ID 我分配的 被初始化 此时我使用该 id 来查询另一个数据表以构建图表 我的问题是
  • 在我的部署中设置 Cache-Control no-cache, no-store 是什么?

    我有一个问题 我的应用程序部署总是返回响应标头 Cache Control no cache Cache Control no store Expires Thu 01 Jan 1970 00 00 00 GMT Pragma no cac
  • 使用 Airflow 中的另一个 dag 触发外部 dag

    有调用主 dag 中不同 dags 的任务列表 我正在使用 TriggerDagrunoperator 来完成此操作 但面临的问题很少 TriggerDagrunoperator 不会等待外部 dag 完成 它会触发下一个任务 我希望等到完
  • 在 React Native Android ViewManager 中暴露 Fragment

    我正在尝试将 YouTube Android API 包装为 React Native 的 UI 组件 我已经成功完成了 Android 配置 获得 onInitializationSuccess 但是我无法弄清楚如何将 YouTubePl
  • Spring中无法使用Tomcat提供的JNDI DataSource?

    我想在基于 Spring 的应用程序中使用 Tomcat 提供的 JNDI 数据源 我使用 Tomcat 7 池 尝试按照描述进行配置here https stackoverflow com questions 9183321 how to
  • 将打字稿字符串转换为布尔值

    我正在尝试将字符串转换为布尔值 有几种方法可以做到这一点 一种方法是 let input true let boolVar input true 这里的问题是我必须验证输入是否正确 除了验证第一个输入然后进行转换之外 还有其他更优雅的方法吗
  • 使用 Firebase 跟踪应用链接

    我们有 Android 和 iOS 应用程序 我们想要跟踪我们的应用程序是从哪些链接下载的 因此 如果我们在 Facebook 上发布了我们应用程序的链接 并且有人点击该链接并下载了它 它应该记录该应用程序是在 Facebook 上下载的
  • 如何选择 Windows 窗体文本框中的所有文本?

    我想选择文本框中的所有文本 我已经使用下面的代码尝试过 textBoxResults SelectionStart 0 textBoxResults SelectionLength textBoxResults Text Length 来源
  • MySql 意外停止

    MySql 意外停止 这是错误日志的副本 2019 07 03 13 27 50 0 错误 InnoDB 您的数据库可能已损坏或 您可能复制了 InnoDB 表空间 但没有复制 InnoDB 日志 文件 请参阅https mariadb c
  • 如何连接 GWT 超链接点击处理程序?

    我是 GWT 的新手 正在努力实现以下目标 这是我编写的代码 public class MyWebApp implements EntryPoint The main container for everything the user se
  • 如何将express.js服务器部署到Netlify

    我正在尝试将 Vue js Node Express MongoDB MEVN 堆栈应用程序部署到 Netlify 我成功地将应用程序的前端部署到 Netlify 现在正在尝试基于以下内容部署 Express 服务器serverless h