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

如何以ES Module方式导入NeDB的DataStore

ES Module导入NeDB的Datastore正确姿势

NeDB是CommonJS模块,它直接把Datastore构造函数作为整个模块的导出,并非放在对象里的属性,所以之前的写法才会报错。给你几个可行的方案:

直接用默认导入(最简洁)

直接把默认导出命名为Datastore,拿到就能用:

import Datastore from 'nedb';

// 实例化数据库
const db = new Datastore({ filename: './my-db.db', autoload: true });

兼容命名导入的写法

如果你习惯用花括号的写法,可以用default as来重命名:

import { default as Datastore } from 'nedb';

// 同样实例化
const db = new Datastore({ filename: './my-db.db', autoload: true });

你之前踩的坑说明

  • 你用import nedb from 'nedb'; const { DataStore } = nedb;得到undefined,核心原因是拼写错误:NeDB导出的是Datastore(第二个字母为小写s),你写的是DataStore(大写S),自然解构不到目标对象。
  • 用import * as nedb from 'nedb';得到[Function: Datastore],是因为这种导入会把CommonJS模块的导出包装成对象,Datastore实际存放在nedb.default属性里,所以也可以这么写:
import * as nedb from 'nedb';
const Datastore = nedb.default;

// 实例化使用
const db = new Datastore({ filename: './my-db.db', autoload: true });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:54:37