从项目assets目录获取JSON数据失败,请求技术排查建议
本地assets目录获取JSON失败的排查方向
以下是你遇到问题的可能原因及排查步骤:
1. 文件路径错误
- 确认
assets目录的位置是否匹配代码中的相对路径:- 若HTML文件在项目根目录,
assets/mydata.json是根目录相对路径;若HTML在子目录(如src/),需调整为../assets/mydata.json - 注意文件名大小写:Linux/macOS系统区分大小写,确保代码里的文件名和实际文件完全一致,比如不要把
mydata.json写成MyData.json
- 若HTML文件在项目根目录,
2. 文件扩展名缺失
- 你请求Schema文件的路径是
assets/myschema,但之前S3示例的Schema文件带.json后缀,若本地文件实际是myschema.json,必须补充后缀,否则服务器无法找到对应文件
3. 本地访问协议问题
- 直接打开本地HTML文件(
file://协议)时,浏览器同源策略会阻止fetch请求本地文件,必须通过本地服务器(如http-server、框架自带开发服务器)访问,使用http://或https://协议 - 可以在浏览器地址栏输入
http://localhost:端口号/assets/mydata.json,验证是否能正常加载JSON内容
4. JSON文件格式错误
- 确认
mydata.json和myschema.json是有效的JSON格式:- 检查是否存在语法错误,比如遗漏逗号、引号不匹配、末尾多余逗号(JSON不允许末尾逗号,和JS对象不同)
- 可将文件内容复制到浏览器控制台,用
JSON.parse(内容)测试是否能正常解析
5. 项目构建配置问题
- 若使用Vue/React/Angular等框架,需确认
assets目录是否被配置为静态资源目录:- 比如Vue中需用
@/assets/mydata.json这类路径(取决于框架配置) - 检查构建工具是否误排除了
assets目录下的JSON文件,导致打包后文件缺失
- 比如Vue中需用
代码对比
之前的S3远程请求代码:
var jsonify = res => res.json(); var dataFetch = fetch("https://s3.eu-central-1.amazonaws.com/fusion.store/ft/data/plotting-multiple-series-on-time-axis-data.json").then(jsonify); var schemaFetch = fetch("https://s3.eu-central-1.amazonaws.com/fusion.store/ft/schema/plotting-multiple-series-on-time-axis-schema.json").then(jsonify);
修正后的本地请求代码示例:
var jsonify = res => res.json(); var dataFetch = fetch('assets/mydata.json').then(jsonify); var schemaFetch = fetch('assets/myschema.json').then(jsonify);
内容的提问来源于stack exchange,提问作者NanoNet
相关产品推荐
相关产品推荐

