Javascript 为什么readdirSync()没有这样的文件或目录?
index.jsJavascript 为什么readdirSync()没有这样的文件或目录?,javascript,node.js,Javascript,Node.js,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/'
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”,但似乎没有任何效果 尝试使用
路径
模块处理路径,如下所示
const path=require('path');
const dirPath=path.resolve(_dirname,'./commands');
然后将dirPath
传递给readdirSync
函数。
path
是一个内部node.js模块,因此您不需要在Windows上安装任何东西。Windows的路径delimeter是\
,而不是/
。尝试使用以下方法使您的程序平台不可知:
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);
“/{DIRECTORY_NAME}”和前面的./可以正常工作。我刚测试过。一定是别的什么东西,比如拼写错误。你在Windows上吗?windows上的路径delimeter为“\”。这是否回答了您的问题?我使用的是windows for local dev。我通过:``path.resolve(commandsFolder)``解决了这个问题。我刚刚在您的答案之前找到了这个问题。你完全正确。我没有意识到在Windows(本地)和Ubuntu(远程服务器)之间,如果没有这个,路径将无法正确解析。