2016-11-18 71 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') 

这工作,我的模块在所有的地方更换此之后修复所有我的错误。

相关问题