Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么readdirSync()没有这样的文件或目录?_Javascript_Node.js - Fatal编程技术网

Javascript 为什么readdirSync()没有这样的文件或目录?

Javascript 为什么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/'

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”,但似乎没有任何效果

尝试使用
路径
模块处理路径,如下所示

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(远程服务器)之间,如果没有这个,路径将无法正确解析。