使用node:fs/promises的fs.readdir无日志输出,求问题排查
问题
我的测试代码如下:
const fs = require('node:fs/promises'); fs.readdir('C:/Users/Chia/Downloads', function(err, files){ if(err) { console.log('Erroe',err); } else { console.log('Result',files); }});
跟着教程学习时,控制台没有任何日志输出,请问这是什么问题?
原因及解决方法
- 你引入的是**
fs/promises**模块,它的readdir是Promise风格的API,不支持传入回调函数,所以你写的回调永远不会被执行,自然没有日志输出。 - 此外,Promise如果没有通过
then/catch或async/await配合try/catch处理,发生错误时会静默失败,也不会打印错误信息。
解决方式一:改用回调风格的fs模块
直接引入基础fs模块,它支持回调写法:
const fs = require('node:fs'); fs.readdir('C:/Users/Chia/Downloads', function(err, files){ if(err) { console.log('Error',err); // 注意修正拼写错误:Erroe → Error } else { console.log('Result',files); } });
解决方式二:用Promise风格处理(推荐)
适配fs/promises的特性,用Promise语法处理结果和错误:
const fs = require('node:fs/promises'); // 方式1:使用then/catch链式调用 fs.readdir('C:/Users/Chia/Downloads') .then(files => console.log('Result', files)) .catch(err => console.log('Error', err)); // 方式2:使用async/await+try/catch(更易读) async function getDownloadFiles() { try { const files = await fs.readdir('C:/Users/Chia/Downloads'); console.log('Result', files); } catch (err) { console.log('Error', err); } } getDownloadFiles();
另外注意代码里的拼写错误:Erroe应为Error,避免后续排查时混淆。
内容的提问来源于stack exchange,提问作者Mohammad Yekta
相关产品推荐
相关产品推荐

