跳到主要内容

Vercel部署前后端共存项目

本篇文章记录一下使用 Vercel 平台,基于 express 部署一个前后端并存的项目。

项目结构

│  index.js
│ package-lock.json
│ package.json

├─frontend
│ index.html

└─node_modules

构建步骤

初始化 npm 项目

npm init -y

安装 express

npm i express

添加前端页面

在根目录创建 frontend 文件夹,用于存放前端页面,例如 frontend 下的 html 文件。

├─frontend
│ index.html

创建入口文件

在根目录创建 index.js 文件,写入以下代码。

const express = require('express');
const path = require('path');
const app = express();

/**
* 设置作为静态资源响应的目录,如果请求路径指向静态资源,
* 则返回静态资源,否则继续向下寻找对应的路由。
*/
app.use(express.static(path.join(__dirname, './frontend')));

// 对于其他请求,自定义响应结果
app.get('*', (req, res) => {
console.log('received URL: ' + req.url);
res.send('<h1 style="text-align:center">404 Not Found</h1>');
});

let port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server is running at: http://localhost:${port}`);
});

module.exports = app;

创建 vercel 配置文件

在根目录创建 vercel.json 文件,写入以下代码。

{
"version": 2,
"builds": [
{
"src": "index.js",
"use": "@now/node"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "index.js"
}
]
}

创建 gitignore

在根目录创建 .gitignore 文件,忽略没必要上传的文件或目录。

node_modules/
.vercel

最后,将项目推送至 github 仓库,使用 vercel 连接该仓库,一键部署即可(此步骤网上有大量教程)。部署成功后,访问生成的域名,能够正常显示前端页面,访问未知路径,能够正常显示预设置的 404 not found(对于国内无法访问 vercel 生成的域名的问题,可参考 docusaurus+github+vercel+cloudflare 免费部署博客 中的解决方案)。

但是但是但是,这种部署方式有一个缺陷,那就是大文件无法加载,差不多大小为几兆的图片就会加载失败,因为 vercel 平台的限制,但如果不使用 express,部署成纯静态页面的话就不会有这个问题!!!


创建时间:2025年2月11日

更新时间:2025年2月11日

Loading Comments...