You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Netlify、Railway等免费服务部署Handlebars(hbs)+Node.js+MongoDB应用?

Node.js + Handlebars + MongoDB 项目免费托管指南

一、Railway App 部署(推荐,对后端支持最友好)

  • 前置准备:
    • 项目根目录的package.json里要有正确的start脚本,比如"start": "node app.js",本地能正常启动项目;
    • 把MongoDB连接字符串改成环境变量读取,比如用process.env.MONGODB_URI替代硬编码的连接串。
  • 部署步骤:
    1. 登录Railway,新建项目选择「Deploy from GitHub」,授权后选中你的项目仓库;
    2. 项目导入后,Railway会自动识别Node.js环境,自动安装依赖并尝试启动服务;
    3. 添加MongoDB连接串:在项目的「Variables」页面,新增环境变量MONGODB_URI,值可以用Railway自带的免费MongoDB服务(在Marketplace里搜MongoDB添加,直接复制它的连接串),或者用你自己的MongoDB Atlas免费实例连接串;
    4. 部署完成后,Railway会自动分配一个免费域名,也可以在「Settings」里绑定自定义域名。

二、Vercel 部署(适合轻量后端应用)

  • 前置准备:
    • package.json的start脚本配置正确,本地运行正常;
    • MongoDB连接串通过process.env.MONGODB_URI读取,避免硬编码。
  • 部署步骤:
    1. 登录Vercel,点击「Add New Project」导入你的GitHub仓库;
    2. 配置页面里,「Framework Preset」选「Other」,「Build Command」留空(不需要前端构建),「Install Command」用默认的npm install;
    3. 在「Environment Variables」里添加MONGODB_URI,填入你的MongoDB连接串;
    4. 点击「Deploy」,等待部署完成后就能用Vercel分配的域名访问,也可以绑定自定义域名。
  • 注意:Vercel免费层的Node.js服务有10秒请求时长限制,接口处理复杂的话可能超时,适合轻量应用。

三、Netlify 部署(需适配Netlify Functions)

  • 前置准备:
    • 安装serverless-http和@netlify/plugin-nodejs依赖:npm install serverless-http && npm install --save-dev @netlify/plugin-nodejs;
    • 把MongoDB连接串改成环境变量读取。
  • 部署步骤:
    1. 登录Netlify,导入你的GitHub仓库;
    2. 配置页面里,「Build Command」设为npm install,「Publish Directory」设为./;
    3. 在「Site settings > Environment variables」里添加MONGODB_URI;
    4. 项目根目录创建netlify.toml配置文件:
    [[plugins]]
      package = "@netlify/plugin-nodejs"
    
    [[redirects]]
      from = "/*"
      to = "/.netlify/functions/server"
      status = 200
    
    1. 创建functions/server.js文件,把你的Express + Handlebars应用改成Netlify Function格式:
    const express = require('express');
    const path = require('path');
    const hbs = require('hbs');
    const mongoose = require('mongoose');
    const serverless = require('serverless-http');
    const app = express();
    
    // 连接MongoDB
    mongoose.connect(process.env.MONGODB_URI)
      .then(() => console.log('MongoDB连接成功'))
      .catch(err => console.error('MongoDB连接失败:', err));
    
    // 配置Handlebars模板
    app.set('view engine', 'hbs');
    app.set('views', path.join(__dirname, '../views'));
    hbs.registerPartials(path.join(__dirname, '../views/partials'));
    
    // 静态文件和中间件
    app.use(express.static(path.join(__dirname, '../public')));
    app.use(express.urlencoded({ extended: true }));
    
    // 你的路由逻辑,比如首页
    app.get('/', (req, res) => {
      res.render('index', { title: '首页' });
    });
    
    // 导出为Netlify Function
    exports.handler = serverless(app);
    
    1. 把所有改动提交到GitHub,Netlify会自动部署完成。
  • 注意:Netlify免费层每月有10万次Function调用限制,适合访问量不大的应用。

内容的提问来源于stack exchange,提问作者Dede Holsing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:23:25