我正在尝试在纯 javascript 中将 LowDB 与 Electron 一起使用,但出现“必须使用导入来加载 ES 模块”错误。我做了一些研究,但内容太旧并且不起作用。这是我发现的:
这是我得到错误的代码:
Javascript
const electron = require("electron");
const { join } = require("path");
const { Low, JSONFile } = require("lowdb"); // this line gives error
const remote =
process.type === "browser" ? electron : require("@electron/remote");
const app = electron.app ? electron.app : remote.app;
const database =
process.env.NODE_ENV === "development"
? join(__dirname, "dev_db.json")
: join(app.getPath("userData"), "todoiva_db.storm");
// Use JSON file for storage
const adapter = new JSONFile(database);
const db = new Low(adapter);
// Read data from JSON file, this will set db.data content
db.read();
整个错误:
应用程序在加载期间抛出错误错误 [ERR_REQUIRE_ESM]: Import must be used to load ES modules: /Users/mrocks/others/sipsak/node_modules/lowdb/lib/index.js requires() ES modules are not supported . /Users/mrocks/others/sipsak/database.js 中的 /Users/mrocks/others/sipsak/node_modules/lowdb/lib/index.js 的 require() 是一个 ES 模块文件,因为它是一个 .js 文件,它最近父 package.json 包含 “type”: “module” ,它将该包范围内的所有 .js 文件定义为 ES 模块。相反,将 index.js 重命名为以 .cjs 结尾,将所需代码更改为使用 import(),或从 /Users/mrocks/others/sipsak/node_modules/lowdb/package 中删除“type”:“module”。 json.
at new NodeError (node:internal/errors:370:5)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1128:13)
at Module.load (node:internal/modules/cjs/loader:982:32)
at Module._load (node:internal/modules/cjs/loader:823:12)
at Function.c._load (node:electron/js2c/asar_bundle:5:13331)
at Module.require (node:internal/modules/cjs/loader:1006:19)
at require (node:internal/modules/cjs/helpers:93:18)
at Object. (/Users/mrocks/others/sipsak/database.js:3:27)
at Module._compile (node:internal/modules/cjs/loader:1110:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1140:10)
我只想在没有 ES6 的情况下使用 LowDB。
更新:我按照说明进行操作,但它们对我的问题没有帮助。
暂无评论内容