【问题标题】:NodeJS `fs.readdir` not reading hidden files on macOSNodeJS`fs.readdir`没有读取macOS上的隐藏文件
【发布时间】:2021-05-27 11:53:29
【问题描述】:
  • NodeJS 版本:v15.6.0
  • macOS 版本:v10.15.7

给定以下文件层次结构:

/root
  |- /dir1
  |    |- .another-hidden-file.txt
  |
  |- /dir2
  |    |- some-file.txt
  |
  |- .hidden-file.txt
  |- index.js

以及下面的代码(上面的index.js):

const fs = require('fs');

const content = fs.readdirSync(__dirname);

我希望得到以下输出:

console.log(content);
    // -> ['dir1', 'dir2', '.hidden-file.txt', 'index.js']

但是得到以下输出:

console.log(content);
    // -> ['dir2', 'index.js']

Sync、Async 和 Promises 版本都给出相同的结果。

我还尝试了fs.opendirSync 的较低级别方法,结果相同。

据我所知,隐藏文件应该可以通过fs.readdir 访问。相反,甚至包含这些文件的目录似乎也被忽略了(在上面的示例中为dir1)。

【问题讨论】:

  • ls -la@ 说什么?
  • @georg 它按预期显示所有文件/目录。
  • 我明白了。可见文件和隐藏文件的用户/组/权限是否相同?
  • @georg 对 Finder 的“获取信息”下的隐藏/可见文件具有相同的权限。
  • 我无法重现该问题。当我测试该代码(macOS 11.4、zsh 5.8、Node v14.16.0)时,我得到了[ '.hidden-file.txt', 'dir1', 'dir2', 'index.js' ]

标签: javascript node.js macos file


【解决方案1】:

经过额外测试,我发现问题是由于 Babel 在构建过程中没有复制点文件引起的(参见 Babel #5052)。

我通过使用--include-dotfiles 标志解决了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多