繁体   English   中英

找不到模块“/home/container/node_modules/sqlite3/lib/binding/napi-v3-linux-x64/node_sqlite3.node”

[英]Cannot find module '/home/container/node_modules/sqlite3/lib/binding/napi-v3-linux-x64/node_sqlite3.node'

一切都在我的电脑上通过 cmd 完美运行但是当我将它托管在我的主机服务器上时我有这个错误:

`:/home/container$ npm 启动 knexfile.js 在 Node.js 12.19.1 (x64) 上启动 Modmail 3.3.0 正在从 config.ini 加载配置... 配置正常:使用 SQLite 数据库。 /home/container/db/data:sqlite Knex。 运行 $ npm install sqlite3 --save Cannot find module '/home/container/node_modules/sqlite3/lib/binding/napi-v3-linux-x64/node_sqlite3:node' 需要堆栈:

  • /home/container/node_modules/sqlite3/lib/sqlite3-binding.js
  • /home/container/node_modules/sqlite3/lib/sqlite3.js
  • /home/container/node_modules/knex/lib/dialects/sqlite3/index.js
  • /home/container/node_modules/knex/lib/knex.js
  • /home/container/node_modules/knex/lib/index.js
  • /home/container/node_modules/knex/knex.js
  • /home/container/src/knex.js
  • /home/container/src/main.js
  • /home/container/src/index.js`

SQLite3 需要一个特定于目标系统架构的库。 如果您安装 npm package,它会尝试从其源代码“实时”在目标机器上构建此库。 如果目标系统没有安装必要的 C 编译器和构建工具,这可能会失败。

如果您尝试将node_modules文件夹上传到目标机器,则只有在 dev 和 prod 机器具有相同架构的情况下才有效。 因此,将模块从您的开发机器 (Windows) 上传到目标机器 (Linux) 在您的场景中不起作用。

一种解决方案是在目标机器上安装所有必要的构建工具,删除node_modules/sqlite3文件夹并使用npm install

一种解决方法是在不同的 Linux 机器或等效的 docker 容器上编译必要的 Linux 库,然后将其上传到目标机器。

Linux AMD64 架构的文件可以在成功npm install npm 后在此文件夹中找到: node_modules/sqlite3/lib/binding/napi-v3-linux-x64

如果以上都不适合您,您将找到我现在在http://hosting134516.a2e37.netcup.net/napi-v3-linux-x64/node_sqlite3 编译的 SQLite3@5.0.2 版本。节点,但请注意,这可能仅适用于 SQLite3 的 5.0.2 版本。

问候,亚历克斯

已解决:我的项目中有一个 yarn.locker 文件。 我删除了那个文件并重建了项目,它对我有用。 脚步:

  1. 删除 yarn.locker
  2. docker 构建
  3. docker 跑

该错误可能是因为以前下载的依赖项不兼容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM