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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:25:22