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

Node JS Absolute paths using windows % variables treated as relative

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

查找 Appdata 目录的最佳做法是使用 %appdata% 指定路径,因此在我的代码中:

var filePath = '%appdata%/some/path/file.ext';
fs.unlinkSync(filePath);

问题是返回错误,指示路径错误,因为它正在尝试定位类似以下内容:

C:\my\project\%appdata%\some\path\file.ext

这显然不存在。

所以我正在寻找将 %appdata% 解析为 C:\Users\user\AppData\Roaming 的最佳方法。

希望我能做一些类似的事情:

var filePath = resolveToAbsolutePath('%appdata%/some/path/file.ext');
fs.unlinkSync(filePath);

感谢任何形式的帮助。

备注:

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

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

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