问题描述
公司整体服务从经典环境迁移到vpc,npm私有仓库也需要迁移,对原来的服务器做了镜像,迁移完成后,通过网页访问,页面空白,无数据展示,查看接口返回的数据,接口响应确实为空
问题排查
-
数据未迁移成功?
开始以为数据没有迁移成功,让运维看了下磁盘数据,数据存在,且和原仓库数据保持一致,所以非数据问题
-
配置有问题?
verdaccio 通过配置文件指定数据存储目录,没有数据可能是因为配置的目录和实际目录不匹配,对比后发现没有异常,所以排除配置问题
- 查看源码定位问题
很懵逼的时候只能查看源码了,接口中都用到了storage,通过跟踪调用,最终看到,使用了.sinopia-db.json 存储包索引数据,并且在项目启动后会将该数据load到内存,通过lunr简历内存索引,提供快速的检索功能
让运维对比了两台服务器.sinopia-db.json的差异,发现新迁移的服务器上,确实少了该文件,而原来那台服务器的.sinopia-db.json文件刚好不在数据盘上,所以迁移的时候没有迁移过去,导致了以上问题,所以解决问题就很简单了,文件copy即可