文章目录
- 一、打包 uniapp h5 项目
- (1) 打开 manifest.json 文件,修改相关配置
- (2) 开始项目打包
- 二、修改 express 相关配置
- (1) 添加打包后的前端资源文件
- (2) 修改 app.js 文件
- (3) 修改项目启动命令
- 三、使用宝塔面板部署项目
- (1) 宝塔面板安装
- (2) 项目环境搭建
- 四、添加 MongoDB 数据库
- 五、部署 Express 项目
一、打包 uniapp h5 项目
(1) 打开 manifest.json 文件,修改相关配置

注:此处的
运行基础路径参数不要随意填写,此前根据网上分享的资料将其修改为./导致底部 tab 栏的图片显示异常,随后删除相关参数后重新打包才解决了该问题。
对应的源码:
"h5" : {
"router" : {
"base" : "",
"mode" : "history"
}
}
更多详情可参见:https://uniapp.dcloud.net.cn/collocation/manifest.html#h5
(2) 开始项目打包
如图所示,点击 发行 中的网站选择:

在弹出的对话框中直接点击 发行 (无需填写网站域名):

打包成功后,控制台会显示导出的文件路径,打开目标文件夹:

创建一个新的文件夹 dist,并将之前打包后的相关文件复制至 dist 文件夹中(此步骤为后续的 express 项目加载前端资源做准备):

二、修改 express 相关配置
(1) 添加打包后的前端资源文件
将先前打包好的前端资源文件放在新创建的 dist 文件夹中,并将其放入 express 项目:

注:这里的
favicon.ico图标需要自己制作,可以使用相关在线工具制作ico图标:https://www.bitbug.net/
(2) 修改 app.js 文件
// app.js
const express = require("express");
const app = express();
...
// 加载前端打包后的项目
app.use(express.static(path.join(__dirname, 'dist')));
...
module.exports = app;
此时启动项目后,可以通过访问 http://localhost:3000/ 来查看是否能够成功加载前端资源文件。
(3) 修改项目启动命令
由于项目在 windows 系统开发,可以通过 SET NODE_ENV=development&& node ./bin/www来启动项目,而云服务器是 linux,如果再使用该命令来启动则会报错,因此,此处引入 cross-env 这个第三方工具来帮助我们解决跨平台的环境变量设置。
安装 cross-env:
npm i cross-env
修改 package.json 文件:
"scripts": {
"start": "cross-env NODE_ENV=production node ./bin/www",
"dev": "cross-env NODE_ENV=development nodemon ./bin/www"
},
使用 cross-env 来设置环境变量后,无需修改命令即可在不同系统中执行(注:linux 上部署项目可能会有权限问题,后续将会说明)
三、使用宝塔面板部署项目
(1) 宝塔面板安装
可以使用在线安装方式,访问宝塔面板安装地址:https://www.bt.cn/new/download.html
填写相关信息后,点击安装:

在弹出的对话框中根据自身实际选择要安装的环境:

安装成功后,在弹出的对话框中复制宝塔面板访问地址及相关账户信息(不小心关掉了也没关系,可以使用
Xshell相关工具访问服务器,然后执行bt查看相关命令获取账户信息)
(2) 项目环境搭建
访问上一步复制的宝塔面板访问地址,输入相应的账号密码登录后,点击左侧菜单栏的 软件商店 选项,下载所需的软件。此处项目使用了 Node.js 和 MongoDB,所以安装了相关软件,应根据自身实际安装相应的软件。

注:此处一定要注意安装的
Node.js版本,最好是开发的时候使用的是什么版本,就安装什么版本,否则项目中使用的第三方依赖包可以会由于Node.js的版本太高或太低而出现报错,其他软件也一样,要注意版本的兼容性问题。(举例说明:比如我在windows操作系统下开发的项目,使用的Node.js版本为18.16.0,项目中使用了mongoose这个第三方库,安装的版本是8.7.0,而云服务器安装的Node.js版本为14.17.6,此时如果将项目部署在云服务上将会出现报错,最终通过降低了mongoose的版本为6.13.2才解决了该问题。)
四、添加 MongoDB 数据库
安装完 MongoDB 后,点击左侧菜单栏的 安全 选项,添加端口规则,放行 27017 端口:

注:购买的云服务器也要放行 27017 端口,此处以阿里云为例:

点击左侧菜单栏的 首页 选项,选择并打开 MongoDB 服务:

点击左侧菜单栏的 数据库 选项,添加数据库:

开启安全认证,并设置密码和添加权限,此处的 权限 全部勾选(可根据自身实际做选择)

由于我们需要使用本地的数据库管理工具连接该远程数据库,所以需要修改 MongoDB 的相关配置(记得保存):

使用数据库管理工具 MongoDB Compass 来连接该远程数据库(也可以使用其他数据库管理工具,根据自身实际选择):

连接的 url:
mongodb://root:你设置的密码@你的服务器地址:27017/
// 例:
mongodb://root:123abc@192.168.1.1:27017/
补充:如果要在 express 项目中使用 mongoose 连接该远程数据库,则需要写成:
// 导入模块
const mongoose = require("mongoose");
// 数据库连接地址
let DB_URL = 'mongodb://root:你设置的密码@你的服务器地址:27017/数据库名称?authSource=admin'
mongoose.connect(DB_URL).then(
res => {
console.log('-- Connection successful. --');
},
err => {
console.log('-- Connection failed. --');
}
)
module.exports = mongoose;
至此,数据库相关的准备工作基本结束,可以先使用本地的数据库管理工具测试是否能够正常运行,MySQL 数据库也是通过类似的方式来添加。
五、部署 Express 项目
先在本地将整个 express 项目压缩成 zip 文件,并上传至服务器。点击左侧菜单栏的 文件 选项,在 www 目录下上传项目文件:

解压项目文件:

点击左侧菜单栏的 网站 选项,点击添加 Node 项目(阿里云也要放行 3000 端口,同数据库端口放行方法一致):

为项目绑定域名,并开启外网映射:

修改反向代理配置(记得保存):

注:此处的
proxy_pass端口后不能与项目的启动端口号相同,第一次部署的时候不清楚,导致无法通过绑定的域名访问,虽然我还不知道原理≡(▔﹏▔)≡
注意:项目启动的时候, cross-env 可能会出现报错 cross-env: Permission denied,它提示权限不够,在网上查找了相关资料后,在项目终端中使用了命令 chmod -R a+x node_modules 解决了该问题。
参考资料:https://stackoverflow.com/questions/54831494/sh-1-cross-env-permission-denied-on-laravel-mix
该命令执行路径(进入该项目文件夹,点击顶部菜单栏的 终端 选项):

项目如果无法正常执行,可以通过查看 项目日志 来查看报错信息:

启动项目后,即可通过 绑定的域名:3000 访问网站。



















