我正在使用 Electron 开发桌面应用程序,并且本地数据存储存在问题。我的目标是检查用户是否已使用本地存储的令牌登录。如果令牌存在,应用程序应直接打开主窗口。否则,它应该首先显示加载窗口和登录窗口
(console.log("Token is Null")
)。
但是,当我尝试导入
electron-store
库时,出现错误。
const Store = require('electron-store');
const store = new Store();
let mainWindow;
function createMainWindow(alrealdyLogin) {
mainWindow = new BrowserWindow({
width: 300,
height: 400,
frame: false,
show: true,
transparent: false,
resizable: false,
fullscreenable: false,
titleBarStyle: 'customButtonsOnHover',
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
contextIsolation: true,
enableRemoteModule: false,
nodeIntegration: false
},
icon: path.join(__dirname, 'icon.png')
});
mainWindow.loadFile('html/loading.html');
}
app.on('ready', () => {
const token = store.get('token');
if (token) {
createLoginWindow(false);
createMainWindow();
} else {
createLoadingWindow(true);
createLoginWindow();
}
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
const token = localStorage.getItem('token');
if (BrowserWindow.getAllWindows().length === 0) token == null ? console.log("Token is Null") : createMainWindow();
});
错误:
应用程序在加载过程中抛出错误错误[ERR_REQUIRE_ESM]:ES模块C:\ Users \ Narzay \ Projets \ Meagan Client \ Launcher Electron的require() 不支持来自 C:\Users\Narzay\Projets\Meagan Client\Launcher Electron\main.js 的 ode_modules lectron-store\index.js。
相反,将 C:\Users\Narzay\Projets\Meagan Client\Launcher Electron\main.js 中的 index.js 的 require 更改为动态 import(),该动态 import() 在所有 CommonJS 模块中都可用。
在c._load(节点:电子/js2c/node_init:2:16955) 在对象。 (C:\Users\Narzay\Projets\Meagan Client\Launcher Electron\main.js:3:15)
警报弹出窗口:
主进程中发生 JavaScript 错误
未捕获的异常:
错误 [ERR_REQUIRE_ESM]:ES 模块 C:\Users\Narzay\Projets\Meagan Client\Launcher Electron 的 require() ode_modules lectron-store\index.js 来自 不支持 C:\Users\Narzay\Projets\Meagan Client\Launcher Electron\main.js。相反,将 C:\Users\Narzay\Projets\Meagan Client\Launcher Electron\main.js 中的 index.js 的 require 更改为动态 import() ,该动态 import() 在所有 CommonJS 模块中都可用。 在c._load(节点:电子/js2c/node_init:2:16955) 在对象。 (C:\Users\Narzay\Projets\Meagan Client\Launcher 电子\main.js:3:15)
我想恢复“localStorage”中的“token”值:
localStorage.setItem('token', data.token);
只需更改此:
const Store = require('electron-store');
对此:
const Store = ( await import('electron-store') ).default;
该错误几乎是不言自明的,并提供了解决方案。