使用节点 js 将代码从 fs 更改为 fs-extra
changing code from fs to fs-extra using node js
我用var fs= require("fs").promises;
写了一段代码
- 读取我在目录和子目录中的所有文件
var fs= require("fs").promises;
async function checkFileLoc(folderPath, depth) {
depth -= 1;
let files = await fs.readdir(folderPath);
files = await Promise.all(
files.map(async (file) => {
const filePath = path.join(folderPath, file);
const stats = await fs.stat(filePath);
if (stats.isDirectory() && depth > 0) {
return checkFileLoc(filePath, depth);
} else if (stats.isFile()) return filePath;
else return null;
})
);
return files
.reduce((all, folderContents) => all.concat(folderContents), [])
.filter((e) => e != null);
}
然后我在我的项目中安装 fs-extra
包并将 var fs=require("fs");
替换为 var fse=require("fs-extra");
并像这样更改我的代码
var fse=require("fs-extra");
async function checkFileLoc(folderPath, depth) {
depth -= 1;
let files = await fse.readdir(folderPath);
files = await Promise.all(
files.map(async (file) => {
const filePath = path.join(folderPath, file);
const stats = await fse.stat(filePath);
if (stats.isDirectory() && depth > 0) {
return checkFileLoc(filePath, depth);
} else if (stats.isFile()) return filePath;
else return null;
})
);
return files
.reduce((all, folderContents) => all.concat(folderContents), [])
.filter((e) => e != null);
}
当我使用 fs
时,我得到了想要的输出,有人告诉我 fs-extra
是提前的,然后 fs
而你所要做的就是替换 fs
fse
我的代码无法正常工作 我犯错的任何解决方案?
- 我在使用
var fs= require("fs").promise;
时的输出是我是否读取了目录中存在的所有文件
FilePath=
[/home/work/test/abc.html
/home/work/test/index.js
/home/work/test/product.js
]
- 我在使用
var fse=require("fs-extra")
空 时的输出
filePath=[]
我在使用 fs-extra
时没有输出
我试图弄清楚如果我使用 var fse= require("fs-extra");
我必须做出哪些改变
所以我的代码将如下所示
var fse=require("fs-extra");
async function checkFileLoc(folderPath, depth) {
depth -= 1;
let files = fse.readdirSync(folderPath);
files = await Promise.all(
files.map(async (file) => {
const filePath = path.join(folderPath, file);
const stats = fse.statSync(filePath);
if (stats.isDirectory() && depth > 0) {
return checkFileLoc(filePath, depth);
} else if (stats.isFile()) return filePath;
else return null;
})
);
return files
.reduce((all, folderContents) => all.concat(folderContents), [])
.filter((e) => e != null);
}
我更换了我的
var fs=require("fs");
到 var fse=require("fs-extra");
let files = await fs.readdir(folderPath);
与 let files = fs.readdirSync(folderPath);
const stats = await fs.stat(filePath);
与 const stats = fs.statSync(filePath);
现在我得到了我想要的输出
我用var fs= require("fs").promises;
- 读取我在目录和子目录中的所有文件
var fs= require("fs").promises;
async function checkFileLoc(folderPath, depth) {
depth -= 1;
let files = await fs.readdir(folderPath);
files = await Promise.all(
files.map(async (file) => {
const filePath = path.join(folderPath, file);
const stats = await fs.stat(filePath);
if (stats.isDirectory() && depth > 0) {
return checkFileLoc(filePath, depth);
} else if (stats.isFile()) return filePath;
else return null;
})
);
return files
.reduce((all, folderContents) => all.concat(folderContents), [])
.filter((e) => e != null);
}
然后我在我的项目中安装 fs-extra
包并将 var fs=require("fs");
替换为 var fse=require("fs-extra");
并像这样更改我的代码
var fse=require("fs-extra");
async function checkFileLoc(folderPath, depth) {
depth -= 1;
let files = await fse.readdir(folderPath);
files = await Promise.all(
files.map(async (file) => {
const filePath = path.join(folderPath, file);
const stats = await fse.stat(filePath);
if (stats.isDirectory() && depth > 0) {
return checkFileLoc(filePath, depth);
} else if (stats.isFile()) return filePath;
else return null;
})
);
return files
.reduce((all, folderContents) => all.concat(folderContents), [])
.filter((e) => e != null);
}
当我使用 fs
时,我得到了想要的输出,有人告诉我 fs-extra
是提前的,然后 fs
而你所要做的就是替换 fs
fse
我的代码无法正常工作 我犯错的任何解决方案?
- 我在使用
var fs= require("fs").promise;
时的输出是我是否读取了目录中存在的所有文件
FilePath=
[/home/work/test/abc.html
/home/work/test/index.js
/home/work/test/product.js
]
- 我在使用
var fse=require("fs-extra")
空 时的输出
filePath=[]
我在使用 fs-extra
我试图弄清楚如果我使用 var fse= require("fs-extra");
所以我的代码将如下所示
var fse=require("fs-extra");
async function checkFileLoc(folderPath, depth) {
depth -= 1;
let files = fse.readdirSync(folderPath);
files = await Promise.all(
files.map(async (file) => {
const filePath = path.join(folderPath, file);
const stats = fse.statSync(filePath);
if (stats.isDirectory() && depth > 0) {
return checkFileLoc(filePath, depth);
} else if (stats.isFile()) return filePath;
else return null;
})
);
return files
.reduce((all, folderContents) => all.concat(folderContents), [])
.filter((e) => e != null);
}
我更换了我的
var fs=require("fs");
到var fse=require("fs-extra");
let files = await fs.readdir(folderPath);
与let files = fs.readdirSync(folderPath);
const stats = await fs.stat(filePath);
与const stats = fs.statSync(filePath);
现在我得到了我想要的输出