节点JS绝对路径使用窗口%变量视为相对

时间:2015-10-08 12:25:28

标签: javascript node.js filepath fs

我在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. 这与使用环境变量不同,因为我从外部获取路径,并且我还需要能够解析%路径。我有兴趣推广解决方案,而不是手动用环境变量数据替换路径。

1 个答案:

答案 0 :(得分:3)

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

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