解决 better-sqlite3 连接 SQLite 时报错 Could not locate the bindings file

解决 better-sqlite3 连接 SQLite 时报错 Could not locate the bindings file

💡 原文中文,约6900字,阅读约需17分钟。
📝

内容提要

在迁移服务器时,better-sqlite3 连接 SQLite 报错“找不到绑定文件”,原因是缺少编译好的二进制文件。通过手动构建 better_sqlite3.node 文件解决了该问题,确保服务正常运行。

🎯

关键要点

  • 在迁移服务器时,发现 better-sqlite3 连接 SQLite 报错,原因是缺少编译好的二进制文件。
  • 迁移工作相对简单,主要是修改 Workflow 的目标机器 IP 和 SSH Key,重新运行 CI 打包。
  • Docker 容器运行后,访问接口报错,提示找不到 bindings 文件。
  • better-sqlite3 需要编译原生绑定文件,缺少 better_sqlite3.node 文件导致连接失败。
  • 通过手动构建 better_sqlite3.node 文件解决了该问题,确保服务正常运行。
  • CI 机器的新系统环境缺少一些预装的依赖,导致 node-gyp build 没有执行成功。
  • 建议在选择服务器操作系统时,优先考虑稳定性,Debian 是一个不错的选择。

延伸问答

为什么在迁移服务器时会出现 better-sqlite3 连接 SQLite 的错误?

错误是由于缺少编译好的二进制文件 better_sqlite3.node,导致无法连接数据库。

如何解决 better-sqlite3 找不到绑定文件的问题?

可以通过手动构建 better_sqlite3.node 文件来解决该问题。

在 Docker 中使用 SQLite 时需要注意什么?

需要在 Dockerfile 中安装 libc6-compat 和 sqlite,并确保数据库文件路径正确。

为什么 CI 机器上没有成功执行 node-gyp build?

因为新系统环境缺少一些预装的依赖,导致 node-gyp build 没有执行成功。

选择服务器操作系统时应该考虑哪些因素?

建议优先考虑系统的稳定性,Debian 是一个不错的选择。

better-sqlite3 的安装过程是怎样的?

better-sqlite3 在安装时会尝试自动构建原生模块,如果找不到预编译的二进制文件,则会使用 node-gyp rebuild 进行编译。

➡️

继续阅读