如何以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
相关产品推荐
相关产品推荐

