Node JS 使用 windows % 变量视为相对路径的绝对路径

Sel*_*ish 1 javascript filepath fs node.js

我正在fs.unlinkSync()Node.js 脚本中使用方法,以便删除位于Appdata目录中的文件。

定位目录的最佳实践Appdata是使用 指定路径%appdata%,因此在我的代码中:

var filePath = '%appdata%/some/path/file.ext';
fs.unlinkSync(filePath);
Run Code Online (Sandbox Code Playgroud)

问题是返回错误,表明路径错误,因为它试图找到类似以下内容的内容:

C:\my\project\%appdata%\some\path\file.ext
Run Code Online (Sandbox Code Playgroud)

这显然不存在。

所以我正在寻找解决问题的最佳%appdata%方法C:\Users\user\AppData\Roaming

希望我能做一些事情:

var filePath = resolveToAbsolutePath('%appdata%/some/path/file.ext');
fs.unlinkSync(filePath);
Run Code Online (Sandbox Code Playgroud)

任何形式的帮助表示赞赏。

笔记:

  1. 不,这个问题与使用正斜杠而不是反斜杠无关。
  2. 这与使用环境变量不同,因为我从外部获取路径,并且我还需要能够解析%路径。我感兴趣的是概括该解决方案,而不是手动用环境变量数据替换路径。

dco*_*enb 5

您可以使用解析路径的函数来解析它:

function resolveToAbsolutePath(path) {
    return path.replace(/%([^%]+)%/g, function(_, key) {
        return process.env[key];
    });
}
resolveToAbsolutePath('%LOCALAPPDATA%\\Google\\Chrome\\Application');
Run Code Online (Sandbox Code Playgroud)