内容纲要
报错
最近安装某插件后出现图示报错,

05:25:12.457 ✗ ERR [ChatAI][Skills] 初始化失败: Could not locate the bindings file. Tried:
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\build\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\build\Debug\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\build\Release\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\out\Debug\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\Debug\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\out\Release\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\Release\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\build\default\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\compiled\24.14.1\win32\x64\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\addon-build\release\install-root\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\addon-build\debug\install-root\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\addon-build\default\install-root\better_sqlite3.node
→ C:\Users\liuzj\Documents\TRSS-Yunzai\node_modules\.pnpm\better-sqlite3@12.4.1\node_modules\better-sqlite3\lib\binding\node-v137-win32-x64\better_sqlite3.node
错误日志分析
在 Node 服务端程序连接 SQLite 是用了 better-sqlite3 这个库,它是 Node.js 中速度最快、最简单的 SQLite 库,在 Nestjs 里也是支持用 TypeORM 来基于这个库操作 SQLite 。
better-sqlite3 的产物
和普通的依赖包直接引入 dist 产物开箱即用不一样,它还需要编译一次原生绑定文件,默认情况下,它会尝试在安装时自动构建原生模块,对比本地在 node_modules 里的目录文件,和 npmjs 上的发布文件列表,会发现线上的发布版少了 better_sqlite3.node 这个文件,提示的报错信息也是少了这个文件。


解决方法
进入\node_modules\better-sqlite3文件夹,可以看到binding.gyp文件,右键命令行直接执行
pnpm build-release
等待编译完毕即可
参考
https://chengpeiquan.com/en/article/better-sqlite3-error-could-not-locate-the-bindings-file


Comments NOTHING