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

Expo中MediaLibrary.getAlbumsAsync未定义问题求助

解决Expo 27.0.1中MediaLibrary未定义及相册访问错误的问题

嘿,我来帮你搞定这个Expo访问相册的问题!结合你给出的代码、版本信息和遇到的错误,我整理了几个关键的修复点:


1. 修正模块导入路径

在Expo 27.0.1这个版本里,MediaLibrary和Permissions已经不是直接从expo主包导入了,你原来的写法会导致MediaLibrary变成undefined。正确的导入方式应该是这样:

import { MediaLibrary } from 'expo-media-library';
import { Permissions } from 'expo-permissions';

划重点:Expo在这个版本已经把很多功能拆分到独立包了,直接从expo拿MediaLibrary肯定拿不到~

2. 规范权限申请代码

你写的权限申请代码得确保是在async函数里执行,另外权限常量的引用也要准确。给你调整一下:

// 这段代码一定要放在async函数内部哦
async requestAlbumPermission() {
  const { status } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
  if (status === 'granted') {
    this.setState({ permissionsGranted: true }, this.getAlbums);
  } else {
    // 别忘了处理用户拒绝权限的情况
    alert('得允许访问相册才能继续哦');
  }
}

3. 给相册获取代码加上错误捕获

权限通过后获取相册的代码,最好用try/catch包裹,方便排查问题,而且也要确保getAlbums是async函数:

async getAlbums() {
  try {
    const albumsResponse = await MediaLibrary.getAlbumsAsync();
    console.log('拿到的相册列表:', albumsResponse);
    // 这里就可以处理相册数据啦
  } catch (error) {
    console.error('获取相册出错了:', error);
  }
}

额外提醒

  • 如果你的项目是裸React Native项目(不是Expo Managed),得手动安装依赖:
    expo install expo-media-library expo-permissions
    
  • Expo 27确实有点老了,很多API后续都有更新,如果条件允许的话,升级到新一点的版本会更省心哦~

内容的提问来源于stack exchange,提问作者Nick Gonzalez Roso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:08:26