You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS端升级async-storage与Expo后NSCocoaErrorDomain 512错误求助

问题根因

该错误仅在iOS触发是因为iOS沙箱文件系统对路径格式校验更严格:升级Expo和AsyncStorage后,存储路径生成逻辑异常,自动生成的路径中%40amdig%2Fcenflex-puraskar是URL编码后的字符,对应原始路径为@amdig/cenflex-puraskar,程序没有先递归创建两级目录,直接把带编码斜杠的字符串当成单级文件名操作,因此触发「Not a directory」报错。

解决方案

按优先级依次尝试:

  • 完全卸载测试设备上的现有App,删除所有本地残留的存储目录后重新打包安装,旧版本的目录残留会导致路径校验冲突,该方案已被多数遇到同款问题的开发者验证有效。
  • 若卸载重装无效,手动提前创建目标存储目录,避开自动生成路径的逻辑缺陷:
    若为Expo项目,可在App入口初始化阶段用expo-file-system先创建合法目录:
    import * as FileSystem from 'expo-file-system';
    import AsyncStorage from '@react-native-async-storage/async-storage';
    
    // 启动时优先初始化存储目录
    const initAsyncStorage = async () => {
      const targetDir = `${FileSystem.documentDirectory}ExponentExperienceData/@amdig/cenflex-puraskar`;
      const dirStat = await FileSystem.getInfoAsync(targetDir);
      if (!dirStat.exists) {
        // 开启intermediates支持递归创建多级目录
        await FileSystem.makeDirectoryAsync(targetDir, { intermediates: true });
      }
    }
    
    initAsyncStorage();
    
    若为原生React Native项目,替换为react-native-fs执行相同的目录创建逻辑即可。
  • 以上方案均无效时,回退到升级前正常运行的Expo版本,配套使用Expo官方对应版本推荐的AsyncStorage版本,不要单独跨大版本升级AsyncStorage依赖。

内容的提问来源于stack exchange,提问作者Ahmed - Projects

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:06:06