【问题标题】:Node-Webkit: fs.readdirSync("~") does not workNode-Webkit:fs.readdirSync("~") 不起作用
【发布时间】:2014-11-30 01:06:16
【问题描述】:

来自fs.readdirSync(path) 的文档:同步 readdir(3)。返回一个文件名数组,不包括 '.''..'

我愿意:

console.log(require('fs').readdirSync('~'))

我得到Uncaught Error: ENOENT, no such file or directory '~'

我是不是做错了什么,或者readdirSync 出于某种原因不能与 Node-Webkit 一起使用?我应该使用其他方式来读取主目录吗?

【问题讨论】:

    标签: node.js filesystems node-webkit


    【解决方案1】:

    波浪号 ~ 是一个 bash 函数,因此 Node 无法识别它的含义。

    在这种情况下,您需要在 readDirSync() 函数中使用主目录的绝对路径。

    在 Unix 系统上,您还可以使用环境变量 $HOME,其中 ~ 是一个别名。

    var path = process.env.HOME;
    

    Windows 等效的环境变量是 HOMEPATH。

    编辑:

    正如 OP 所提到的,npm pakage path-extra 提供了一个跨平台的 homedir() 方法

    【讨论】:

    • $HOME 与平台无关吗?
    • 在整个 unix 系统中都使用它。当然,windows 有不同的名称,它是 HOMEPATH ;)
    • 我明白了。对于将来偶然发现这个问题的人,我最终使用了 NPM 的 path-extra 模块。只需将波浪号替换为 require('path-extra').homedir() 即可。
    • 在我看来这是一个不必要的要求,编写它甚至使用比 process.env.HOME 更多的字符 ;-) 有什么特别的原因吗?
    • 然后我需要添加一个 if 语句以使其与 Unix 中的 HOME 和 Windows 中的 HOMEPATH 一起工作。
    猜你喜欢
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2021-06-05
    • 2017-07-18
    • 2018-04-17
    相关资源
    最近更新 更多