You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的Localbase.js代码会抛出Cannot find module './localbase.json'错误?

解决Error: Cannot find module './localbase.json'的问题

这个问题我之前也碰到过,核心是Node.js里相对路径的基准不一致导致的,我来帮你理清楚:

问题根源

  • 你用fs.writeFileSync("./localbase.json", "{}")时,这个相对路径是基于Node.js进程的工作目录(也就是你启动server.js的项目根目录),所以文件会被创建在根目录下,而不是db文件夹里。
  • 但你用require('./localbase.json')时,这个相对路径是基于当前模块文件(localbase.js)所在的目录(也就是db目录),所以它会去db/localbase.json找文件——可文件实际在根目录,自然就报错找不到了。

当你把localbase.js移到根目录时,两个路径的基准统一成了根目录,读写都能找到文件,所以就正常了。

解决方法(推荐第一种)

方法1:用__dirname统一路径(最稳妥)

通过__dirname(当前模块文件所在目录的绝对路径)来拼接文件路径,确保读写操作指向同一个位置:

const fs = require("fs");
// 用path模块处理路径更规范,避免不同系统的分隔符问题
const path = require("path");

const filePath = path.join(__dirname, "localbase.json");
if (!fs.existsSync(filePath)) {
  fs.writeFileSync(filePath, "{}");
}
// require支持绝对路径,直接传filePath就行
let database = require(filePath);

这样不管以后把localbase.js移到哪个目录,代码都能正确找到对应的localbase.json文件,不用修改路径。

方法2:手动调整路径指向根目录

如果你希望localbase.json留在根目录,那可以把require的路径改成指向根目录的相对路径:

const fs = require("fs");
const filePath = "./localbase.json";

if (!fs.existsSync(filePath)) {
  fs.writeFileSync(filePath, "{}");
}
// 从db目录往上跳一级到根目录
let database = require("../localbase.json");

不过这种方法灵活性差,以后移动文件位置就得重新改路径,不如方法1实用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:47:35