微信小程序真机调试无法读取 JSON 文件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
luxi78
V2EX    微信

微信小程序真机调试无法读取 JSON 文件

  •  
  •   luxi78 204 天前 1340 次点击
    这是一个创建于 204 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在微信小程序中尝试读取项目中的 JSON 文件,代码如下:

     const path = "assets/animations/main_ani.json"; const fs = wx.getFileSystemManager(); try { // 读取本地 JSON 文件 const fileCOntent= fs.readFileSync(path, "utf-8"); let animData; try { animData = JSON.parse(fileContent); console.log(animData); } catch (e) { console.error("JSON 解析失败", e); } } catch (err) { console.error("读取文件失败", err); } 

    这段代码在 微信开发者工具模拟器 中可以正常运行,但在 真机远程调试 时出现如下错误:

    index.ts:69 读取文件失败 Error: readFileSync:fail no such file "assets/animations/main_ani.json" at W_ (WAServiceMainContext.js:1) at Object.<anonymous> (WAServiceMainContext.js:1) at I (WAServiceMainContext.js:1) at Object.p (WAServiceMainContext.js:1) at li.onTest (index.ts:60) at o.safeCallback (WASubContext.js:1) at WASubContext.js:1 at wn (WASubContext.js:1) at WASubContext.js:1 at pe (WASubContext.js:1) 

    尝试将 path 改为 "/assets/animations/main_ani.json" 之后,问题依旧。

    疑问: 小程序的 JSON 文件应该如何正确读取?

    开发者工具和真机调试的文件路径是否有差异?

    是否需要特殊配置,或使用其他方式加载 JSON 文件?

    希望有经验的朋友能帮忙解答,感谢!

    17 条回复    2025-03-28 13:42:32 +08:00
    qhd1988
        1
    qhd1988  
       204 天前
    考虑改成 js 文件,export 出来吧
    luxi78
        2
    luxi78  
    OP
       204 天前
    @qhd1988 这样做确实可以,但还是希望能找到最佳实践的方式,而不是用 trick 了。毕竟读取作为项目资源存在的 json 文件还是很常规的操作了,难倒大家都没有遇到过这样的需求吗?
    qhd1988
        3
    qhd1988  
       203 天前
    @luxi78 #2 看起来你是想加载 lottie 动画?我们的动画都丢腾讯的 cos 上了,直接用 lottie.loadAnimation 加载出来
    gadfly3173
        4
    gadfly3173  
       203 天前 via Android
    看你代码好像没什么问题,真机调试不成功的话你得观察一下上传代码包时那个 popup 的内容,可能你这个 json 被忽略了,没有上传
    junan
        5
    junan  
       203 天前
    json 文件放在 static 目录下试试?
    duanxianze
        6
    duanxianze  
       203 天前
    4#说的对,没有显式引用,可能上传的时候被忽略了
    wjfz
        7
    wjfz  
       203 天前
    我理解微信小程序的 FileSystemManager 读取的是手机系统的文件,不是代码包目录内的文件,所以这种使用姿势不对。
    miku999
        8
    miku999  
       203 天前
    真机调试后可以去 devtools 的 source 面板里看看文件在不在
    harlen
        9
    harlen  
       203 天前
    不能读项目内的 json 文件吧,上次写背单词小程序,为了省服务端,把字典放代码里面,最后只有 export 能正常读取到, 放项目内还有个大小限制开发工具好好的,上传上去就超大
    luxi78
        10
    luxi78  
    OP
       202 天前
    @qhd1988 是的,是 lottie 动画。之所以不放网上是想尽量减少对外部的依赖。
    luxi78
        11
    luxi78  
    OP
       202 天前
    @gadfly3173 嗯,确实 json 文件被忽略了
    luxi78
        12
    luxi78  
    OP
       202 天前
    @junan 好像 static 目录在小程序里面也没有什么特殊性吧?
    luxi78
        13
    luxi78  
    OP
       202 天前
    @wjfz 但诡异的是微信开发者工具里面的模拟器是可以正常运行的,放真机上就不行了。
    luxi78
        14
    luxi78  
    OP
       202 天前
    @miku999 devtools 的 source 里看到的内容极为少,明确有的东西也未必能显示出来。感觉微信开发者工具就是一个草台班子做出来的
    luxi78
        15
    luxi78  
    OP
       202 天前
    @harlen 也就是说也是和一楼兄弟建议的方法一样了,改成 js 或 ts 文件,在 export 出来,对吧。
    junan
        16
    junan  
       202 天前
    @luxi78 #12 我记得 static 目录下的文件不会被编译,记不太清,你试试?
    luxi78
        17
    luxi78  
    OP
       201 天前
    @junan 试过了,不行的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3362 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 04:41 PVG 12:41 LAX 21:41 JFK 00:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86