从未调用Node js readdir回调



我想使用fs.readdr从一个目录中读取所有文件

var updateFeaturesFromDir = async function(dir, recurse, logString, addedString, callback){
console.log("hello"); //This is printed
fs.readdir('.', (err, files) => {
console.log(files); // This is never reached
if(err) {
console.log(err);
callback(err);
return;
}
});
};

然而,当运行此程序时,我只会将"hello"打印到控制台。此外,在回调中使用vs代码设置的断点永远不会触发。我不知道为什么会发生这种情况,因为昨天同一个地方的代码工作了,我不知道是什么变化打破了它

我还用绝对路径(__dirname(进行了尝试,但没有成功。

我觉得我错过了一些非常明显的东西,但我看不出来。任何帮助都很感激。

编辑:节点版本:v14.16.0

以下是我获取fs:的方法

var fs = require('fs');

编辑2:

在像已接受的答案中那样修复了这个问题之后,我在其他回调函数中也遇到了同样的问题。我发现了原因:出于某种愚蠢的原因,我在index.js文件中有一个阻塞函数。移除后,一切又恢复正常。我想我会加上这一点,以防有人面临类似的问题。

请尝试以下方法

示例1:

import { readdirSync } from "fs";
const updateFeaturesFromDir = async function (
dir,
recurse,
logString,
addedString,
callback
) {
try {
console.log("hello");
const filses = readdirSync('your path here');
console.log('filses: ', filses);
} catch (error) {
console.log('Error: ', error);
return error;
}
};

示例2:

import { readdir } from 'fs/promises';
const updateFeaturesFromDir = async function (
dir,
recurse,
logString,
addedString,
callback
) {
try {
console.log("hello");
const filses = await readdir('your path here');
console.log('filses: ', filses);
} catch (error) {
console.log('Error: ', error);
return error;
}
};

最新更新