2016-11-18 2 views
0

Ich habe eine Server-Datei, die E-Mails an Benutzer basierend auf der restify API, die ich gebaut habe, sendet. Diese Datei befindet sich unter /lib Verzeichnis. Und wenn diese Datei mail_helper.js versucht, die Datei ./email_templates/default-inline.html zu lesen, schlägt es fehl. Es wird versucht, email_template Datei von der root der Knoten App statt innerhalb lib Verzeichnis zu finden. Die Ordnerstruktur sieht wie folgt aus:Relative Pfad readFile Fehler ENOENT: keine solche Datei

- 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 

Lauf node index.js aus dem Stammverzeichnis der Fehler führt:

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

Wie kann ich richtig relativen Pfad verweisen diese Situation zu vermeiden?

+2

Verwenden Sie keinen relativen Pfad, verwenden Sie etwas wie> 'path.join (__ Verzeichnisname, 'email_templates', 'default-inline.html')' ein relativer Pfad ist nur sinnvoll bei Ihren Anforderungen, nicht bei der Übergabe von Dateinamen Über. – Keith

+0

@Keith Das hat funktioniert! Aber ich habe das an vielen Stellen gemacht. Können Sie bitte einen Code in Antwort hinzufügen und erklären, was __dirname tut? – kirtan403

Antwort

0

Wie in den Kommentaren von Keith erwähnt,

Relative Pfad so geschrieben werden sollte:

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

Dieser arbeitete und beheben alle meine Fehler nach dieser überhaupt in meinem Modul den Orten ersetzen .

Verwandte Themen