我有这个功能:
app.get("/files", async (req, res) => {
const usedEndpoints = {};
const getFilesFromLoc = loc => (
new Promise((resolve, reject) => fs.readdir(loc, (err, files) => {
if (err) {
console.error("Could not list the directory.", err);
process.exit(1);
}
Promise.all(files.map(file => {
const newPath = path.join(loc, file);
return new Promise((resolve, reject) =>fs.stat(newPath, (err, stat) => {
if (err) {
console.error("Error stating file.", err);
reject();
}
console.log(newPath)
if (stat.isFile()) {
const extension = path.extname(newPath);
if (extension === ".js" || extension === ".jsx") {
fs.readFile(newPath, "utf8", (err, string) => {
if (err) {
console.error("Error reading file.", err);
reject();
}
allEndpoints.forEach(ep => {
if(string.includes(ep)) usedEndpoints[ep] = true;
});
resolve(true);
});
}
} else if (stat.isDirectory()) {
getFilesFromLoc(newPath)
.then(() => resolve(true));
} else {
reject();
}
}))
})).then(() => resolve(true))
}))
)
getFilesFromLoc("src/server").then(() => {console.log("request finished");res.send(filesString)})
});
基本上,这是一个仅会使用一次的功能,对我来说,它是通过项目文件使用的端点列表。只有一个问题。该项目包含1000多个文件。如果我将loc
的初始getFilesFromLoc
设置为一个不包含太多文件的位置,则可以正常工作,并完成请求。否则,它会在几秒钟后停止。不抛出任何错误,也没有响应。有什么(甚至丑陋的)解决方案吗?