Приложение Electron-Vite, похоже, не загружает сценарий предварительной загрузкиJavascript

Форум по Javascript
Ответить
Anonymous
 Приложение Electron-Vite, похоже, не загружает сценарий предварительной загрузки

Сообщение Anonymous »

Я пытаюсь получить доступ к локальной базе данных sqlite3 с помощью ICP. Когда я запускаю функцию handleSubmit() в своем компоненте входа в систему, я получаю следующую ошибку:

Uncaught (в обещании) TypeError: невозможно получить доступ к свойству «login», window.electronAPI не определено

Я считаю, что мой сценарий предварительной загрузки index.js не загружается, поскольку я вошел в систему в верхней части сценария, который никогда не загружается. отображает.
preload/index.js

Код: Выделить всё

import { contextBridge, ipcRenderer } from 'electron'
import { electronAPI } from '@electron-toolkit/preload'

const api = {}

contextBridge.exposeInMainWorld('electronAPI', {
login: (credentials) => ipcRenderer.invoke('login', credentials)
})
contextBridge.exposeInMainWorld('electron', electronAPI)
contextBridge.exposeInMainWorld('api', api)
main/index.js

Код: Выделить всё

function createWindow() {
// Create the browser window.
const mainWindow = new BrowserWindow({
width: 900,
height: 670,
show: false,
autoHideMenuBar: true,
icon,
// ...(process.platform === 'linux' ? { icon } : {}),
webPreferences: {
preload: join(__dirname, '../preload/index.js'),
sandbox: false,
contextIsolation: true,
nodeIntegrationInWorker: true
}
})
Login.jsx (где я пытаюсь получить доступ к window.electronAPI)

Код: Выделить всё

const handleSubmit = async (e) => {
e.preventDefault()

if (openCreateAccount) {
if (input.password !== input.confirmPassword) {
alert('Passwords do not match')
return
}
}

if (input.email && input.password) {
const user = await window.electronAPI.login({ email: input.email, password: input.password })
if (user) {
auth.loginAction(input)
} else {
alert('Invalid email or password')
}
}
Исправления, которые я пробовал:
  • Установка предварительной загрузки: join(__dirname, '../preload/index.js') на абсолютный путь.
  • Установка nodeIntegration: false.
  • Проверка статуса window.electronAPI (не определено).
    />
  • Подтверждение правильности пути к сценарию предварительной загрузки.
  • Добавление «type»: «module» в package.json.
  • удаление/повторное добавление файлов node_modules и package-lock.json, очистка кэша npm и переустановка зависимостей.
  • Использование const { contextBridge, ipcRenderer } = require('электрон').


Подробнее здесь: https://stackoverflow.com/questions/798 ... oad-script
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»