从Google Firebase Storage文件获取prefixes时console.log无输出问题
问题原因及修复方案
无输出的核心原因:
- 你当前访问的
users/H7pFwl0uuRV1NMt8y55S42hxpTi2路径下没有子文件夹,res.prefixes是空数组,不会触发forEach的回调逻辑,自然不会执行对应的console.log - 就算存在子文件夹,直接将StorageReference对象和字符串拼接,只会输出
[object Object],无法看到实际的前缀路径,需要调用对象的fullPath属性获取路径字符串 - 你代码中
const PREFIX = foldeRef.listAll()写法有误,listAll是异步方法返回Promise,直接赋值拿不到子级内容,需要配合then或者async/await使用
修复后可用代码:
const getNewImages = async () => { const array = []; // 注意array要先声明,否则会触发全局变量报错 const listRef = storageRef .child("users") .child("H7pFwl0uuRV1NMt8y55S42hxpTi2"); try { const res = await listRef.listAll(); // 先打印prefixes长度确认是否存在子文件夹 console.log("子文件夹数量:", res.prefixes.length); res.prefixes.forEach((folderRef) => { // 用fullPath获取实际的前缀路径 console.log("PREFIXES: " + folderRef.fullPath); // 如果要获取子文件夹下的内容,等待listAll执行完成再处理 folderRef.listAll().then(childRes => { // 这里处理子级的prefixes和items }) }); res.items.forEach((itemRef) => { console.log("Items: " + itemRef.fullPath); array.push(itemRef); }); } catch (error) { console.log("ERROR: " + error); } };
如果执行后打印的子文件夹数量为0,说明你目标路径下确实没有子级文件夹,prefixes自然为空,你可以直接去Firebase控制台的Storage页面确认对应路径的文件结构。
内容的提问来源于stack exchange,提问作者Matt Laszcz
相关产品推荐
相关产品推荐

