You need to enable JavaScript to run this app. Node.js环境下导入SQLite触发ERR_MODULE_NOT_FOUND错误的技术求助
优惠活动
大模型
产品
解决方案
定价
更多

Node.js环境下导入SQLite触发ERR_MODULE_NOT_FOUND错误的技术求助

错误根因

你的导入语句加了多余的相对路径前缀,和ESM的模块解析逻辑不匹配。

  • 只要导入路径以./开头,Node的ESM解析器就会默认这是一个本地相对路径,直接从当前脚本所在目录找文件,根本不会去node_modules目录里检索已安装的第三方包。按照报错信息,Node现在正尝试在D:\WebPro\WebProg\cwCode\下找名为sqlite的本地文件,你项目根目录下根本没有这个文件,自然抛出模块找不到的错误。
  • 你已经在package.json里配置了"type": "module",项目本身的ESM规范声明没有问题,也确认过两个sqlite相关的包都正确安装在依赖里,问题完全出在导入路径的写法上。
修正方法
  • 导入第三方npm包不需要加任何相对路径前缀,直接写包名就行。把原来的导入语句改成:
    import * as sqlite from 'sqlite';
    
  • 如果要直接用底层sqlite3驱动的原生API,对应的导入写法是:
    import sqlite3 from 'sqlite3';
    
  • 提个容易踩的ESM坑:后续如果要导入自己写的本地js文件,必须把文件后缀写全。比如同目录下有个自己写的dbConfig.js配置文件,导入时必须写import dbConfig from './dbConfig.js',不能只写./dbConfig,不然照样报找不到模块的错。
可用代码示例

你装的sqlite@4.x是基于sqlite3做的异步封装,只要两个包都在依赖里,直接可以通过下面的代码初始化数据库连接:

import * as sqlite from 'sqlite';
import sqlite3 from 'sqlite3';

// 打开本地数据库文件连接
const db = await sqlite.open({
  filename: './coursework.db',
  driver: sqlite3.Database
});

改完导入路径之后再运行,之前的模块找不到错误就会消失。


内容的提问来源于stack exchange,提问作者Reix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 22:27:06