node.js - ENOENT 在 Express Endpoint 上没有用于 readFileSync 的此类文件

标签 node.js file-io express

想弄清楚这一点,我有点发疯了。我有一些证书需要从我的 api 传递给身份验证客户端;但是,即使该文件明显存在于同一目录中,应用程序仍会继续抛出 ENOENT 异常(我已经对此进行了确认)。我正在使用 readFileSync,有效地执行以下操作:

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

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

谢谢!

最佳答案

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

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

关于node.js - ENOENT 在 Express Endpoint 上没有用于 readFileSync 的此类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27073374/

相关文章:

node.js - 在 Mocha 和 super 测试中保持快速应用程序 session

node.js - 如何在不使用 Jest 测试运行器的情况下使用 Jest 的断言库?

javascript - 将原型(prototype)方法传递给 Promise 的 then 方法

design-patterns - 保存和写入不同文件格式的模式

c++ - (C++) 将文件加载到 vector 中

node.js - 如何在 node.JS 项目上使用 Cassandra CLI?

file-io - 可以列出目录中的文件,但想列出所有目录中的文件

javascript - 异步等待在express.js和mysql.js中没有响应

node.js - 如何使用 Axios 从 React 发送数据并在 express 中使用请求主体?

javascript - Nodejs静态路由和文件的问题