Quiero usar LowDB con Electron en javascript simple, pero tengo el error "Debe usar la importación para cargar el módulo ES". Investigué un poco, pero el contenido es muy antiguo y no funciona. esto es lo que encontré: https://github.com/typicode/lowdb/issues/169
este es el código que tengo error:
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();El error completo:
La aplicación arrojó un error durante la carga Error [ERR_REQUIRE_ESM]: debe usar import para cargar el módulo ES: /Users/mrocks/others/sipsak/node_modules/lowdb/lib/index.js require() de módulos ES no es compatible. require() de /Users/mrocks/others/sipsak/node_modules/lowdb/lib/index.js de /Users/mrocks/others/sipsak/database.js es un archivo de módulo ES ya que es un archivo .js cuyo padre más cercano package.json contiene "tipo": "módulo" que define todos los archivos .js en el alcance de ese paquete como módulos ES. En su lugar, cambie el nombre de index.js para que termine en .cjs, cambie el código requerido para usar import() o elimine "type": "module" de /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)
Solo quiero usar LowDB sin ES6.
actualización: seguí las instrucciones aquí pero no ayudaron a resolver mi problema.
La nueva versión de lowdb se ha convertido en un paquete ESM puro, por lo que no puede usar "requerir". Para usar lowdb sin ESM, creo que la única forma es usar la versión anterior de lowdb. He probado la v1.0.0 de lowdb, que se puede usar por “requerir” perfectamente.
actualización: por favor este problema: https://github.com/typicode/lowdb/issues/534