前言
最近有个同事问我Yapi的idea插件上传接口失败的原因,然后我自己下载了Easy Yapi插件进行测试,发现插件设置面板中无Yapi的配置,也就无法复现失败的原因,心血来潮那就本地安装一个Yapi呗,所以有了这边文章的来源,我会一步步的将我安装步骤和出现问题后解决方法都附上,各位如果安装的时候,也出现问题,请对号入座。
正文
打开Yapi的官方github地址 官方Yapi github地址
环境要求是 nodejs和mongodb而且有版本要求,这里先透露点这个版本号有很大的误区,大坑。
安装nodejs
这里先介绍2个node的版本管理工具,npm 和n
npm用过nodejs的知道,用于管理nodejs的版本,一般我们无需单独安装,他会随着我们安装nodejs的时候一起安装,这里我们通过另外一个版本管理工具n,因为n在版本切换和下载太好用,太方便
n
n是node的一个模块,安装起来也是很方便的,通过下面命令执行
$ sudo npm install -g n
安装完以后,我们查看版本号通过执行下面命令
n --version
我本地的版本号是 9.0.0 如下图所示
这里只介绍几个常用的命令
安装或者切换nodejs版本
n 版本号
列出当前已经安装的 nodejs
n ls
为了安装yapi,我摸索下载这么多版本
安装nodejs
通过上面的介绍,这里安装nodejs简直太方便了,根据官网nodejs要求的版本号是7.6+,那么我们这里就安装 7.6,通过执行下面命令
n 7.6.0
安装成功后,我们在安装mongodb
mongodb
下载压缩包
我是通过官方下载mongodb 压缩包,本地减压后执行的命令安装
我已经下载好了,大家如何不想去官网下载,我这里有安装包,点击下面链接下载也是比较快的mongodb下载地址
创建环境不要的文件夹
下载后进行解压,双击或者解压命令都可以,我们创建一个文件夹,将解压后的文件夹拖追过去,我是在/usr/local/下新建一个mongdb文件夹,将其放到该文件夹下。这里有一个问题,/usr/local文件默认没有读写权限的,所以我们接下来执行下面命令对其赋权
sudo chown 自己电脑名称 /usr/local/mongodb
执行后,输入密码回车就可以了。
创建data、log文件夹,随便找个有权限的地址创建即可,我是在mongodb当前文件夹下创建的。如下图所示
同样创建log 文件,如下图所示
配置环境变量
打开base_profile文件,执行步骤如下图所示
执行完1、2步骤后,在base_profile文件里添加
export PATH=/usr/local/mongodb/bin:${PATH}
/usr/local/mongodb 路径换成你安装mongodb自己的路径,保存后文件后在执行步骤4即可。
到了验证环境变量是否生效的时候了,通过执行下面命令
mongod -v
如果执行后报错,那么我们将错误信息,复制出来,在信息里会找到如下段错误信息
mongodb-27017.sock","error":"Permission denied"}}
没有权限,那么我们执行 sudo mongod -v ,一般就没问题了
启动mongdb
依次执行如下命令,我们为了避免权限不足的情况,在执行的时候加上了sudo
如果执行报错,一般是 data权限不足,将该文件夹重新赋读写权限即可。
启动后默认是无库,无用户名,无密码,我们验证是否启动成功,用客户端工具链接验证,我这里借住的是datagrip工具,如下图所示
点击下方的测试链接,如果显示成功,那么在点击OK。
新开一个connsole,执行 use yapi命令,创建yapi需要的库。
安装Yapi
到这里才算是正真安装我们需要的软件了。
下载包
依次执行下面命令
npm install -g yapi-cli --registry https://registry.npm.taobao.orgyapi server
执行完会看到控制台打印出下面这行 http://0.0.0.0:9090/
安装
安装Yapi 从官网看到,有2种方式,如下图
可视化部署和命令行部署,这里强烈建议采用命令行部署,原因都是泪。
采用可视化部署的时候,大家看下面几张报错情况
开始我node的版本号是最新的,然后抱上面错,原因是nodejs的版本号太高了,那么将其切换到环境要求的最低版本 7.6.0,执行后
没有结果了。
从控制台看到说是 nodejs的版本号太低了,我j将其升级到14.2.0 的时候,又开始提升npm 版本太低,
当我讲npm升级到最新的时候,又开始提示node 版本太低,nodejs和npm的版本号直接的对应的对应关系太难找了,和官方要求的7.6.0很有出入,最后将node版本定格在12.18.2 ,npm的版本号 6.14.5的时候,终于不再包这个错,而且这个时候yapi的安装版本号要选择 1.8.8。
你们以为这样就可以了吗?太小瞧困难了,不再抱版本号的问题,但是链接mongodb的时候,又报错了,如下图所示:
Error: (node:90198) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
大概意思是提示让 useUnifiedTopology: true参数加到mongo客户端调用的构造方法中。这不就简单么,我们找到链接的代码,将其加入到构造方法中即可,又开始找代码中,终于经过 install.js、yapi.js、util/db.js关联文件找到链接mongodb的构造方法定义在db.js中,如图所示
修改配置、重启服务、开始部署,结果还是报上诉错,查看db.js的时候,发现刚刚加的配置没有了,说明这个文件是实时生成,这些就犯难了,难道要找db.js这个文件是如何生成的吗?太困难了。正当犯愁的时候,看到部署yapi还有另外一种方法。那就试试另外一种方法吧。
根据上图中的步骤,我们只要执行红框中的步骤即可,其他步骤已经在执行可视化界面的时候生成了,按照上述步骤执行又出现错误,根据错误信息,能看出来是初始化管理员账号失败,那么将mongodb user表删除后,再执行 run install --server 显示下面一段内容
幸福来的太突然了,这就成功了,有点不相信,那就试着打开链接看看,天亮了,出现了登陆界面,输入提示的用户名和密码,出现下面一幕
尽然真的可以了,幸福来的太突然了。经历了无数次失败后,采用另外一种方式部署后,竟然成功了。
总结
当前安装版本如下
nodejs:v12.18.2
n:
n --version
v9.0.0
npm :6.14.5
Yapi安装版本号:1.8.8
mongo版本号:
mongod -version
db version v6.0.1
Build Info: {
"version": "6.0.1",
"gitVersion": "32f0f9c88dc44a2c8073a5bd47cf779d4bfdee6b",
"modules": [],
"allocator": "system",
"environment": {
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
启动命令
mongo
sudo mongod --dbpath data
yapi
cd /my-yapi/vendor/server
node app.js
留言
大家在部署Yapi遇到问题,可以在下面留言,毕竟我是踩过无数次坑的人,可能比官网更能解决大家遇到的问题。