Как я могу прочитать абсолютный путь в одном проекте на компьютерах с Windows и Linux, используя NodeJS? - PullRequest
1 голос
/ 21 сентября 2019

У меня есть приложение Node, которое должно работать как в среде Linux, так и в среде Windows.Используя приведенный ниже код, я могу успешно запустить его на Linux, но не на Windows (которую я использую для запуска Powershell).Формат кажется правильным, но путь кажется другим.

В Linux путь pathA/pathB/pathC/file.txt можно легко найти в моем проекте, но в Windows он постоянно преобразуется в C:\Logs\pathA\pathB\pathC\file.txt, что всегда выдает ошибку, потому что это не то место, где находится мой файл.Я хочу, чтобы это было что-то вроде C:\myActualProject\pathA\pathB\pathC\file.txt.

. Я следил за рядом решений по переполнению стека, но пока они приближали меня (например, находил правильный код JS для перевода путей Linux вПути Windows и наоборот), они не помогли мне полностью решить проблему.

Строка кода, на которую я нацеливаюсь, выглядит следующим образом:

const ca = fs.readFileSync(path.resolve('pathA/pathB/pathC/file.txt'))

, но более конкретно, Я смотрю на это:

path.resolve('pathA/pathB/pathC/file.txt')

Я не уверен, почему это сохраняет в каталоге C:\Logs, но опять же, я тоже не часто работаю с Windows.

Может кто-нибудь помочь мне разобраться, как читать файлы, которые существуют в каталогах проекта, а не Logs?

1 Ответ

0 голосов
/ 21 сентября 2019

path.resolve() разрешает пути относительно текущего каталога , который не обязательно совпадает с каталогом приложения (каталогом проекта).

Следовательно, вынеобходимо определить каталог приложения с помощью path.resolve(require.main.filename + '/..') и добавить к нему относительный путь:

path.join(
  path.resolve(require.main.filename + '/..'), 
  'pathA/pathB/pathC/file.txt'
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...