【发布时间】:2022-06-23 18:55:14
【问题描述】:
我想在纯 javascript 中将 LowDB 与 Electron 一起使用,但出现“必须使用导入来加载 ES 模块”错误。我做了一些研究,但内容太旧了,不起作用。 这是我发现的:https://github.com/typicode/lowdb/issues/169
这是我得到错误的代码:
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]:必须使用 导入以加载 ES 模块: /Users/mrocks/others/sipsak/node_modules/lowdb/lib/index.js 需要() 不支持 ES 模块。要求()的 /Users/mrocks/others/sipsak/node_modules/lowdb/lib/index.js 来自 /Users/mrocks/others/sipsak/database.js 是一个 ES 模块文件,因为它是 一个 .js 文件,其最近的父 package.json 包含 "type": "module" 它将该包范围内的所有 .js 文件定义为 ES 模块。 而是将 index.js 重命名为以 .cjs 结尾,将需要的代码更改为 使用 import(),或删除 "type": "module" from /Users/mrocks/others/sipsak/node_modules/lowdb/package.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.<anonymous> (/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。
更新:我遵循了here 的说明,但它们并没有帮助解决我的问题。
【问题讨论】:
标签: javascript electron