在 node.js 中为什么我应该对 ssl 证书和密钥使用 readFileSync?使用 readFile 有哪些陷阱?

Lef*_*ver 3 node.js

var privateKey  = fs.readFileSync('/path/to/franciskim.co.key', 'utf8');
var certificate = fs.readFileSync('/path/to/franciskim.co.crt', 'utf8');
var credentials = { key: privateKey, cert: certificate }; 
Run Code Online (Sandbox Code Playgroud)

为什么不只是 fs.readFile?为什么要读取文件同步?

rsp*_*rsp 5

因为您通常在服务器启动时执行一次,这是唯一一次可以在事件循环的第一个滴答声中使用像fs.readFileSync()或这样的阻塞调用require()

在读取这些键之前,您通常不希望发生任何其他事情,并且阻止调用要容易得多。那时还没有处理任何事件,因此不会发生性能下降和并发问题。

但是在事件循环的第一个滴答结束后,您应该只使用非阻塞调用。

并不是说无法用于fs.readFile()获取证书文件,而是只有在所有相关fs.readFile()调用的所有回调都已成功完成后,您才需要启动其他任何操作。