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);
感谢任何形式的帮助。
备注:
- 不,这个问题与使用正斜杠而不是反斜杠无关。
- 这不同于使用环境变量,因为我从外部获取路径,而且我还需要能够解析 % 路径。我有兴趣概括解决方案,而不是用环境变量数据手动替换路径。
您可以使用将解析路径的函数来解析它:
function resolveToAbsolutePath(path) {
return path.replace(/%([^%]+)%/g, function(_, key) {
return process.env[key];
});
}
resolveToAbsolutePath('%LOCALAPPDATA%\Google\Chrome\Application');
我在 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);
感谢任何形式的帮助。
备注:
- 不,这个问题与使用正斜杠而不是反斜杠无关。
- 这不同于使用环境变量,因为我从外部获取路径,而且我还需要能够解析 % 路径。我有兴趣概括解决方案,而不是用环境变量数据手动替换路径。
您可以使用将解析路径的函数来解析它:
function resolveToAbsolutePath(path) {
return path.replace(/%([^%]+)%/g, function(_, key) {
return process.env[key];
});
}
resolveToAbsolutePath('%LOCALAPPDATA%\Google\Chrome\Application');