Не удается прочитать файл с помощью модуля nodejs fs, когда имя файла хранится в переменной среды - PullRequest
0 голосов
/ 29 октября 2018

Я запускаю приложение узла на сервере Ubuntu 16.04. Я установил переменную среды:

export FILE_PATH="file-path"

Затем я попытался прочитать файл в моем скрипте узла:

const fs   = require('fs');
console.log(process.env.FILE_PATH); // gives correct path.
const data = fs.readFileSync((process.env.FILE_PATH || ""), 'utf8');

Но я получаю сообщение об ошибке «нет такого файла или каталога» в отладчике. Файл существует и имеет необходимые разрешения. Если я укажу путь напрямую, а не из переменной env, он будет работать.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Я выяснил причину этой проблемы. У всех переменных окружения, которые я установил, в конце есть «\ r».

console.log (process.env) выдает:

...
FILE_PATH: '/tmp/file.txt\r',
...

В качестве быстрого исправления я использовал trim () для удаления лишнего символа:

const data = fs.readFileSync((process.env.FILE_PATH.trim() || ""), 'utf8');
0 голосов
/ 29 октября 2018

Вам может потребоваться проанализировать ваш путь с помощью модуля path Node.js. Что-то вроде:

const data = fs.readFileSync(path.resolve((process.env.FILE_PATH || "")), 'utf8');
...