Node.js определяет путь, на который нацелена символическая ссылка

Примечание. Использование Node.js 8

У меня есть ряд символических ссылок: a -> b -> c

Мне нужно преобразовать исходную символическую ссылку a в ее целевое назначение b. Как это можно сделать в Node.js?

Функция fs.realpath разрешает цепочки символических ссылок, поэтому она разрешает a в c. Это нежелательное поведение.

Я также пытался найти пакет npm для этого, но пока безуспешно.

Я подумал, может быть, я мог бы fs.open символическую ссылку и прочитать содержимое, но я не мог понять, как получить доступ к задокументированной константе fs.constants.O_SYMLINK, вероятно, потому, что я на Node 8.


person rich remer    schedule 06.09.2018    source источник
comment
В документации по Node 8 также перечислены fs.constants.O_SYMLINK. Что тут выяснять? Если вы введете это в REPL, разве это не даст вам числовое значение?   -  person Patrick Roberts    schedule 07.09.2018
comment
Нет, fs.constants.O_SYMLINK не определено.   -  person rich remer    schedule 12.09.2018
comment
Что выводит node -v?   -  person Patrick Roberts    schedule 12.09.2018
comment
node -v выходы v8.10.0   -  person rich remer    schedule 12.09.2018


Ответы (1)


Я искал документацию Node.js по слову «символическая ссылка», но документация Node называет их просто «ссылками». Решение состоит в использовании fs.readlink():

const {readlink} = require("fs");

fs.readlink("a", (err, target) => {
    if (!err) console.log(target);    // prints "b"
});
person rich remer    schedule 06.09.2018