当前位置: 首页 > 科技观察

跟我一起开发“Linux”小程序网页版(五):遇到的一些坑

时间:2023-03-21 13:31:27 科技观察

第一篇中提到项目的自动部署放在now.sh上方便预览。但是出于用户体验和速度的考虑,我们选择了国内的七牛云作为页面的宿主。不过七牛毕竟是对象存储,不是专业的静态托管业务,在使用中也遇到了一些坑,幸好经过努力解决了。七牛的Bucket命名规则和大部分云计算厂商是一样的。七牛也是使用Bucket作为存储单元。由于这个项目需要挂linux.cn的二级域名,所以我让老王创建了一个Bucket,绑定了域名,通过七牛自带的权限控制机制分发给我使用。我在我的个人控制台中看到了这个Bucket:我发现了问题。通过控制台手动上传生成的文件后,确认没有问题,然后将相应的功能写入GithubAction的配置文件中(配置文件点此),实现自动部署。但是在部署过程中,反复报错,不知道为什么。打开DEBUG信息后发现Bucket不存在(点我查看CI构建信息)。解决问题和老王沟通后,发现是七牛Bucketname机制的问题。在七牛中分配权限的时候,会要求给Bucket设置别名,这个名字必须和已有的名字不一样,这就导致我看到的Bucket的名字和自己创建的Bucket的名字不一样法老之。而我用的AK和SK是老王在Github后台设置的Secret,Bucket是自己设置的,所以出现了问题。具体的,下图。由于我填写的Bucket是我看到的,不是老王这边真实的Bucket名称,所以上传的时候找不到Bucket。将Bucket名称替换成老王看到的Bucket名称后,问题解决。七牛不支持VueRouter的History模式。在第二篇文章中提到了引入Vue的History模式来优化体验。但是七牛作为一个存储系统,本身并没有转发功能,这导致它无法很好地支持VueHistory模式。经过一番研究,我找到了一个解决方案,就是把index页面同时作为一个404页面,这样从某种意义上来说,所有的请求都可以转发到Index页面。你需要做的就是复制一份index.html,重命名为errno-404,和其他文件一起上传,这样当用户请求一些不存在的文件时,请求会自动转发到errno-404,又因为这个文件的内容是索引文件的内容,所以可以实现请求的转发。相关代码的实现可以在https://github.com/LCTT/tldr.linux.cn/blob/master/.github/workflows/nodejs.yml找到。总结本文介绍了七牛的Bucket问题以及七牛VueRouterHistory模式的解决方法。