项目记录 —— Yapi 部署问题记录

本文最后更新于:25 天前

需求

  • Yapi主要负责对项目的Api文档记录和测试

  • 由于项目中主要是Api的开发,所以在内网搭建Api管理平台成为较大的需求

  • 选择Yapi是由于用的人较多和部署比较方便(如果没有Bug)

Yapi内外部署

部署前环境描述

1
2
3
4
5
6
7
OS: Windows 10

> node --version
v16.13.0

> npm --version
8.1.0

1、简单部署

按照官方文档 内网部署 (smart-xwork.cn)

一开始选择了懒人法也是推荐法,可视化部署

1
2
npm install -g yapi-cli --registry https://registry.npm.taobao.org
yapi server

一开始安装到yapi服务启动都是没有问题的

按照提醒 在浏览器打开 http://0.0.0.0:9090 访问

即通过浏览器访问 http://127.0.0.1:9090/

打开界面,提交表单初始化平台部署

配置界面

提交结果

等待配置时间过长,发现异样,打开cmd检查,果然有错误

错误日志为:

1
2
3
4
5
6
<ref *1> Error: getaddrinfo ENOTFOUND yapi.demo.qunar.com
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:71:26) {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'yapi.demo.qunar.com',

寻找了一下大佬的方案后,只在一 Github issues 中找到了解决流程

便是接下来的 命令行部署

2、命令行部署

先构建一个项目文件夹 如 D:\Project\Yapi

yapi中打开 CMD clone yapi 项目

1
git clone https://github.com/YMFE/yapi.git vendors 

下载完成后在 yapi 下产生 vendors 文件夹,

yapi 文件夹下创建配置文件,可以通过拷贝 config_example.json 更改文件名于为 config.json 文件内容

同时删除 vendors 文件夹下的 package-lock.json

config的参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"port": "3000",
"adminAccount": "admin@admin.com",
"timeout":120000,
"db": {
"servername": "127.0.0.1",
"DATABASE": "yapi",
"port": 27017
},
"mail": {
"enable": false,
"host": "smtp.163.com",
"port": 465,
"from": "***@163.com",
"auth": {
"user": "***@163.com",
"pass": "*****"
}
}
}

参考 shell 命令为

1
2
3
cp vendors/config_example.json ./config.json // ⚠️  复制完成后把内容修改为 config.json
cd vendors
rm package-lock.json // ⚠️ 一定要删除 package-lock.json

接下来安装依赖,进入 vendors 文件夹,执行

1
npm install --production --registry https://registry.npm.taobao.org 

此时可能会出现报错如 —— 依赖冲突、推荐你使用 --force or --legacy-peer-deps:

此时我是使用 --force 解决,即:

1
npm install --force --production --registry https://registry.npm.taobao.org

--force 网上的解释是:基于最后下载的依赖项,并将覆盖任何以前下载的依赖项

最后运行

1
2
npm run install-server 
node server/app.js

运行

但是使用 node 的启动,关闭cmd之后就会停止服务,这里的解决办法是使用 pm2

pm2 的操作命令如下 (在 vendors\server 文件夹下运行)

1
2
3
4
5
6
7
8
npm install -g pm2
pm2 start app.js // 启动
pm2 start app.js -i max //启动 使用所有CPU核心的集群
pm2 stop app.js // 停止
pm2 stop all // 停止所有
pm2 restart app.js // 重启
pm2 restart all // 重启所有
pm2 delete app.js // 关闭