Node-Webkit:fs.readdirSync("~") 不起作用

Ant*_*shy 2 filesystems node.js node-webkit

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

我愿意:

console.log(require('fs').readdirSync('~'))
Run Code Online (Sandbox Code Playgroud)

我明白了Uncaught Error: ENOENT, no such file or directory '~'

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

xSh*_*ase 6

波浪号~是 bash 函数,因此 Node 无法识别其含义。

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

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

var path = process.env.HOME;
Run Code Online (Sandbox Code Playgroud)

Windows 等效环境变量是 HOMEPATH。

编辑 :

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

  • 我知道了。对于将来偶然发现这个问题的任何人,我最终使用了 NPM 的 path-extra 模块。只需用 `require('path-extra').homedir()` 替换波浪号,它应该可以工作。 (2认同)