2016-11-18 55 views
0

我有一個服務器文件,根據我建立的restify API發送電子郵件給用戶。該文件位於/lib目錄下。當該文件mail_helper.js嘗試讀取文件./email_templates/default-inline.html時,它會失敗。它試圖從節點應用程序的root中找到email_template文件,而不是lib目錄中的文件。文件夾結構如下所示:相對路徑讀取文件錯誤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,'e​​mail_templates','default-inline.html')'的相對路徑只對您的require調用有意義,而不能傳遞文件名關於。 – Keith

+0

@凱斯工作!但我已經放了很多地方。你能否在回答中添加一些代碼並解釋__dirname的作用? – kirtan403

回答

0

如由Keith的評論中提到,

相對路徑應該這樣寫:

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

這工作,我的模塊在所有的地方更換此之後修復所有我的錯誤。

相關問題