微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 在ExpressEndpoint上ENOENT没有用于readFileSync的此类文件

我一直在疯狂地试图解决这个问题.我有一些证书需要从我的api传递给身份验证客户端;但是,应用程序继续抛出ENOENT异常,即使该文件显存在于同一目录中(我已经弄清楚了这一点以确保).我正在使用readFileSync,有效地执行以下操作:

key:    fs.readFileSync('./privateKey.pem'),

奇怪的是,如果我在独立的节点服务器上运行它而不是作为api的一部分,则可以毫无问题地找到该文件.在这种情况下尝试使用readFileSync时是否有一些我不知道的注意事项?

谢谢!

解决方法

在节点中,您需要非常小心相对文件路径.我真正使用它们的唯一地方是require(‘./_____’)语句,其中./表示“相对于此文件”.但是,require是一种特殊情况,因为它是节点自动创建每个文件函数,因此它知道当前文件的路径.

通常,标准函数无法知道包含调用函数的脚本的目录,因此在几乎所有情况下,./表示相对于当前工作目录(运行节点时所在的目录< scriptname&gt ;的.js).唯一不是这种情况的情况是,您使用的脚本或模块显式调用process.chdir将工作目录设置为其他内容.引用相对于当前脚本文件文件的正确方法是使用__dirname'/file.js'显式使用绝对路径.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐