Azure网站JSON文件加载失败求助:本地正常部署后无内容显示
你遇到的问题确实大概率是路径匹配错误,本地服务器和Azure的部署环境(尤其是文件结构、大小写敏感性)存在差异,导致相对路径无法正确定位到JSON文件。下面是几个针对性的排查和解决方法:
1. 核对Azure上的实际文件结构
本地的../Maps/ws.json表示当前HTML文件所在目录的上一级目录下的Maps文件夹,但Azure部署后,网站的根目录通常是wwwroot(比如Azure App Service或Static Web Apps)。你需要确认:
Maps文件夹是否确实在网站根目录(wwwroot)下?ws.json文件是否已经成功部署到Maps文件夹中?
你可以登录Azure Portal,进入对应的App Service/Static Web Apps资源,查看文件管理界面,确认文件的位置是否和预期一致。
2. 改用绝对路径替代相对路径
相对路径很容易因为页面所在目录的变化(比如路由跳转、子目录部署)失效,建议改用根路径开头的绝对路径,这样无论页面在哪个位置,都会从网站根目录开始查找文件:
// 替换原相对路径为根路径绝对路径 map.data.loadGeoJson('/Maps/ws.json');
注意:这里的/代表网站的根目录,确保Maps文件夹直接放在根目录下即可。
3. 检查文件名大小写(关键!)
本地Windows环境是大小写不敏感的,但Azure的服务器通常基于Linux,文件名严格区分大小写。如果你的实际文件是WS.json或者Ws.json,但代码里写的是ws.json,就会返回404错误。一定要保证代码里的文件名和Azure上的实际文件名完全一致。
4. 用浏览器开发者工具排查请求
按F12打开浏览器的开发者工具,切换到Network标签,刷新页面后查看ws.json的请求状态:
- 如果是
404 Not Found,说明路径错误,查看请求的URL是什么,对比Azure上的实际文件路径,就能快速定位差异。 - 如果是其他错误(比如403),可能是Azure的静态文件访问权限配置问题,需要检查资源的访问规则。
5. 确认部署时文件是否被包含
有时候部署脚本或CI/CD流程可能会忽略某些文件夹(比如Maps),导致文件没有上传到Azure。检查你的部署配置(比如GitHub Actions、Azure Pipelines的脚本),确保Maps文件夹和ws.json被包含在部署范围内。
内容的提问来源于stack exchange,提问作者Atif

