index.js
const fs = require('fs');
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
文件系统:
src
-commands
-stuff.js
-config.json
-index.js
错误:
Error: ENOENT: no such file or directory, scandir './commands/'
at Object.readdirSync (fs.js:783:3)
该文件夹在那里,并且其中有文件。 我试过'./commands/','./commands','commands',似乎没有任何作用。
答案 0 :(得分:3)
您在Windows上。 Windows的路径分隔符是\
,而不是/
。尝试通过以下方式使程序平台不可知:
const fs = require('fs');
const path = require("path");
const commandDir = path.join(__dirname, "commands");
const commandFiles = fs.readdirSync(commandDir).filter(file => file.endsWith('.js'));
console.log(commandFiles);
答案 1 :(得分:1)
尝试使用path
模块的处理路径,如下所示
const path = require('path');
const dirPath = path.resolve(__dirname, './commands');
然后将dirPath
传递给readdirSync
函数。
path
是内部的node.js模块,因此您无需安装任何内容
答案 2 :(得分:0)
使用正则表达式
const fs = require('fs');
let searchPath = "./mydirectory";
let searchFileName = ".*myfile.*";
let searchFoundFiles = fs
.readdirSync(searchPath)
.filter((f) => new RegExp(searchFileName).test(f));
if (searchFoundFiles.length) {
console.log("File already exists");
}