首页 > 解决方案 > fs.readdir 没有读取作为参数传递的路径

问题描述

我正在尝试使用 fs 读取目录中的所有文件。当我调用 fs.readdir 函数时出现错误

ENOENT:没有这样的文件或目录,scandir 'C:\dev\main\file:\C:\dev\main\public'

当我控制台记录我传递给它打印的函数的值时

文件:///C:/dev/main/public

这是代码。

const url = require('url');
const fs = require('fs');

export let readDir = './';
let files = [];

if (readDir !== './') {
    console.log(url.pathToFileURL(readDir).href);
    fs.readdir(url.pathToFileURL(readDir).href, (err, dir) => {
        if (err){
            throw err;

        }
    })
}

为什么 readdir 函数没有从我传递给它的目录中读取?

标签: javascriptnode.jsfs

解决方案


readdir期望以URL实例或路径形式的数据为string.

您在此处传递 a string,因此您正在为readdir. 因为您string实际上不是一条路径,所以您应该

  • 直接使用readDir(因为它似乎是基于您的代码的路径)
  • 或使用new url.URL(url.pathToFileURL(readDir))

推荐阅读