Node JS Абсолютни пътеки, използващи променливи % на windows, третирани като относителни

Използвам метод fs.unlinkSync() в скрипт Node.js, за да премахна файл, намиращ се в директория Appdata.

Най-добрата практика за намиране на Appdata dir е указването на път с помощта на %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. Това е различно от използването на променливи на средата, тъй като получавам пътищата външно и трябва да мога да разреша и % пътища. Интересувам се от обобщаване на решението, вместо ръчна замяна на пътища с данни за променливи на средата.

person Selfish    schedule 08.10.2015    source източник
comment
Възможен дубликат на Как да чета променлива на средата в Node.js   -  person Patrick Evans    schedule 08.10.2015
comment
Всъщност не е дубликат, тъй като не искам ръчно да замествам известен низ с известна променлива. Търся да разреша всеки път в неговата пълна, абсолютна версия. Свързаният въпрос предлага ръчно заместване на известни променливи.   -  person Selfish    schedule 08.10.2015


Отговори (1)


Можете да го разрешите с помощта на функция, която ще разреши пътя:

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