1

I have the following code which finds a file location for a given file. I want the value to be returned instead of console.log. Library used for finding file location - https://github.com/substack/node-findit

function searchfileloc(fname){
 var finder = require('findit')(__dirname)
 var path = require('path')

 finder.on('file', function (file) {
   if (path.basename(file) == fname){
       console.log(file); //return file
       finder.stop();
   }
  });

}

1 Answers1

0

You can wrap the function in a Promise and call it using await to get the result.

Here's an example:

function searchfileloc(fname) {
  return new Promise((resolve, reject) => {
    const finder = require("findit")(__dirname);
    const path = require("path");

    let found = false;
    finder.on("file", (file) => {
      if (path.basename(file) === fname) {
        found = true;
        finder.stop();
        resolve(file);
      }
    });

    finder.on("end", () => {
      if (!found) {
        reject(new Error("File not found"));
      }
    });
  });
}

// Usage
const myFile = await searchfileloc("my_file_name");
Ikbel
  • 7,721
  • 3
  • 34
  • 45