如何使用 npm 安装 sqlite3 和 canvas 这些包

我目前的开发环境

在安装这些包的时候,用的是 win11 系统,Node 版本是 14.20.0

为什么安装 sqlite3, canvas 的时候经常出错

当我们使用 npm i xxx 命令来安装 Vue, React, lodash 这些普通 npm 包的时候,一般都会成功安装。因为这些包都是使用 JavaScript 来写的,安装的时候直接从 npm 源站点进行下载文件即可,无需在本地进行编译。

但当我们安装 sqlite3, canvas 这些原生 Node.js 包的时候,大多会遇到各种报错,比如:

  1. 缺少 Python, C++ 等环境
  2. 缺少 Visual Studio Build Tools
  3. Permission denied,缺少管理员权限

之所以会出现这些报错,是因为作者开发这些原生 Node.js 包的时候,不仅使用了 JavaScript 代码,还用到了 C++ 代码。我们在安装的时候,需要把这些 JavaScript 和 C++ 源代码下载到本地,然后调用本地的环境进行编译,得到能够使用的依赖包。

但是作为一名 JavaScript 开发者,我们本地一般都会缺少编译所需的环境,所以在编译的时候,大多数都会失败。

如何正确安装 sqlite3, canvas 这些原生包

sqlites3, canvas 这些包的作者在发布这些包的时候,不仅发布了源代码,还发布了不同环境下编译好的二进制文件,如果我们本地无法进行编译,可以直接下载作者编译好的这些二进制文件。

但是在国内不太方便访问 GitHub 网站,从这些站点下载二进制文件的时候大多会出错,我们可以从国内镜像网站进行下载,你可以点进链接查看有没有你需要下载的包。

然后关键点来了,我们在安装包的时候,需要添加一些配置,来指定从国内镜像网站进行下载二进制文件。安装 sqlite3 的时候,使用这样的命令:

bash 复制代码
# 安装最新版本的 sqlite3
npm i sqlite3 --node_sqlite3_binary_host_mirror=https://npmmirror.com/mirrors/sqlite3

# 安装指定版本的 sqlite3,需要注意:
# 安装 5.0.2 及更早的版本,使用下面的源
npm i sqlite3@5.0.2 --node_sqlite3_binary_host_mirror=https://npmmirror.com/mirrors

# 安装 5.0.3 及更新的版本,使用下面的源
npm i sqlite3@5.0.3 --node_sqlite3_binary_host_mirror=https://npmmirror.com/mirrors/sqlite3

如果要安装 canvas 也是类似的命令,但是要把 node_sqlite3_binary_host_mirror 换成 canvas_binary_host_mirror

bash 复制代码
npm i canvas --canvas_binary_host_mirror=https://npmmirror.com/mirrors/canvas

写在后面

如上图所示,我在安装这些包的时候,用的是 win11 系统,Node 版本是 14.20.0。如果你用的是其他系统或者其他版本的 Node,使用上面的命令也可以安装成功。

但是如果遇到了问题,可以参考我上面分享的思路:直接下载作者编译好的二进制文件,跳过本地编译的步骤。

相关推荐
源心锁8 小时前
👋 手搓 gzip 实现的文件分块压缩上传
前端·javascript
phltxy9 小时前
从零入门JavaScript:基础语法全解析
开发语言·javascript
Kagol9 小时前
JavaScript 中的 sort 排序问题
前端·javascript
cos11 小时前
Fork 主题如何更新?基于 Ink 构建主题更新 CLI 工具
前端·javascript·git
摸鱼的春哥12 小时前
AI编排实战:用 n8n + DeepSeek + Groq 打造全自动视频洗稿流水线
前端·javascript·后端
Coder_Boy_13 小时前
基于SpringAI的在线考试系统设计总案-知识点管理模块详细设计
android·java·javascript
Jing_Rainbow13 小时前
【Vue-2/Lesson62(2025-12-10)】模块化与 Node.js HTTP 服务器开发详解🧩
前端·vue.js·node.js
冴羽14 小时前
2026 年 Web 前端开发的 8 个趋势!
前端·javascript·vue.js
fengbizhe15 小时前
bootstrapTable转DataTables,并给有着tfoot的DataTables加滚动条
javascript·bootstrap
刘一说15 小时前
TypeScript 与 JavaScript:现代前端开发的双子星
javascript·ubuntu·typescript