更新Google Apps Script部署后旧版本仍运行 邀请码校验异常排查
1. 为什么scripts.js校验逻辑没有生效
你的前端校验逻辑未生效的核心原因是静态资源缓存:
- S3 托管的静态资源默认会附带缓存规则,即便你用 terraform 更新了桶内的 scripts.js 资源,浏览器本地或CDN节点仍然可能返回旧版本的JS文件。旧版本JS中保留的还是旧邀请码的MD5值、旧的AppScript部署ID,同时如果旧JS执行出错,还会跳过
e.preventDefault()逻辑,导致表单走默认提交行为,直接跳转到AppScript的JSON响应页面。 - 验证方法:打开浏览器开发者工具的「网络」面板,勾选「禁用缓存」后刷新页面,查看加载的scripts.js内容是否和你修改后的版本一致。
- 后续优化:可以在terraform的S3对象配置中,给JS、CSS等易变资源设置
Cache-Control: max-age=300,控制缓存时长避免长期加载旧资源。
2. 为什么触发的是旧版AppScript部署,是否需要归档旧部署
不需要主动归档旧部署,出现该问题的常见原因如下:
- 最可能的原因还是你加载的是旧版scripts.js,请求地址还是旧部署ID,所有请求自然会打到旧部署上,旧部署内的邀请码校验逻辑还是旧规则,所以新邀请码校验失败、旧邀请码可正常提交,和你观测到的执行记录匹配。
- 其次检查你新建AppScript部署的配置:打开AppScript控制台「部署」->「管理部署」,确认你新生成的部署ID对应的代码版本是包含新邀请码的最新版本,若新建部署时选择了绑定旧版本代码,也会出现该问题。
内容的提问来源于stack exchange,提问作者Pix81
相关产品推荐
相关产品推荐

