【问题标题】:How can I use LowDB in Electron without ES6如何在没有 ES6 的情况下在 Electron 中使用 LowDB
【发布时间】: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


    【解决方案1】:

    新版本的lowdb变成了纯ESM包,不能使用require。要在没有 ESM 的情况下使用 lowdb,我认为唯一的方法是使用旧版本的 lowdb。我已经测试过lowdb的v1.0.0,完全可以被“require”使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-09
      • 2020-09-04
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 2021-10-30
      相关资源
      最近更新 更多