使用 Node.js,我尝试在当前目录中搜索文件名末尾附加了随机数的特定文件。经过一番网上搜索后我发现this package可能最适合这项工作,但我似乎无法让它发挥作用。
这是我到目前为止所拥有的:
const find = require('find');
function func1() {
const x = find.file(/solution[0-9]*\.json/, __dirname, function(files) {
console.log(files[0]);
return files[0];
});
console.log(x);
}
func1();
这在找到正确的文件并将其打印到控制台方面做得很好,但我仍然无法在 func1 中使用该文件的路径,而这正是我所需要的。这是我得到的结果:
{ error: [Function: error] }
C:\Users\dir1\dir2\solution78029853.json
我尝试了多种“实验性”可能的语法,但似乎都不起作用,这确实是我能得到的最接近的语法。我确实注意到 { error: [Function: error] }
显示在 console.log(files[0]);
之前,但我不太确定这是否是问题所在,如果是,我不知道如何防止它。没有 const x =
和 console.log(x);
我没有收到任何错误,只显示了路径,所以我确信其中有问题;我只是不知道是什么。我已经在网上搜索了一个多小时,但没有任何进展,所以希望有人知道我做错了什么(可能很简单)。
Bergur 评论后编辑 func1():
function func1() {
const x = find.file(/solution[0-9]*\.json/, __dirname, function(files) {
console.log(files[0]);
return files[0];
})
.error(function(err) {
if (err) {
//
}
});
console.log(x);
}
这不会产生错误,只是为 console.log(x);
打印未定义 .
最佳答案
函数find.file
是异步的,这意味着您将在回调中获得结果(该函数的第三个参数)。
假设您正在使用 ES6 并且希望避免回调 hell 问题,您可以像这样使用 async 和 wait :
const find = require('find');
async function findFile(name, path) {
return new Promise(function (ok, fail) {
find.file(name, path, function(files) {
ok(files.find(_ => true)) // resolve promise and return the first element
});
});
}
async function func1() {
const x = await findFile(/testFile[0-9]/, "files")
console.log(`Path to my file: ${x}`);
}
func1();
关于javascript - 如何在文件查找函数 (Node.js) 中返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847007/