2016-11-18 10 views
0

У меня есть файл сервера, который отправляет электронные письма пользователю на основе API restify, который я создал. Этот файл находится в каталоге /lib. И когда этот файл mail_helper.js пытается прочитать файл ./email_templates/default-inline.html, он терпит неудачу. Он пытается найти файл email_template из приложения root узла, а не внутри lib. Структура папок выглядит следующим образом:Относительный путь readFile error ENOENT: нет такого файла

- root 
    - package.json 
    - index.js (requires lib/mail_helper.js) 
    - lib 
     - mail_helper.js (reads file ./email_templates/default-inline.html) 
     - email_templates 
     - default-inline.html 

Запуск node index.js из корневого каталога бросает ошибку:

Error: ENOENT: no such file or directory, open 'my-local-path\root\email-templates\default-inline.html'

Как я могу ссылаться на относительный путь правильно, чтобы избежать этой ситуации?

+2

Не используйте относительный путь, используйте что-то вроде> 'path.join (__ dirname, 'email_templates', 'default-inline.html')' относительный путь имеет смысл только для ваших вызовов, а не при передаче имен файлов около. – Keith

+0

@ Keith Это сработало! Но я поставил много мест. Не могли бы вы добавить код в ответ и объяснить, что такое __dirname? – kirtan403

ответ

0

Как уже упоминалось в комментариях Кит,

Относительный путь должен быть написан так:

path.join(__dirname, 'email_templates', 'default-inline.html') 

Это, работал и исправить все свои ошибки после замены этого во всех местах в моем модуле ,