Я сейчас пытаюсь скомпилировать свое электронное приложение в dist для ma c. Я использую шаблон, найденный здесь https://github.com/kumarryogeshh/electron-react-parcel-boilerplate
В настоящее время я пытаюсь модулировать части кода, особенно глядя на электронную сторону вещей. Итак, цель состоит в том, чтобы иметь следующую структуру.
- src
- components
- electron_components
window.js
electron.js
App.js
custom.css
index.js
В моем приложении будет несколько windows, поэтому наличие класса windows.js
имеет смысл, см. Ниже:
const electron = require('electron');
const { BrowserWindow } = electron;
const isDev = require("electron-is-dev");
class Window extends BrowserWindow {
constructor(urldev, urlLive, height, width, resizable = true, parent = null, modal = false) {
super({
height: height,
width: width,
frame: true,
resizable: resizable,
show: true,
parent: parent,
modal: modal,
webPreferences: {
//allows application to run in the background
backgroundThrottling: true,
nodeIntegration: true
}
});
let promise = this.loadURL(
isDev
? urldev
: `file://${path.join(__dirname, urlLive)}`
);
}
}
module.exports = Window;
Файл electron.js
находится ниже:
const electron = require("electron");
const app = electron.app;
const path = require("path");
const window = require(path.join(__dirname, './electron_components/window'))
let mainWindow;
function createWindow() {
mainWindow = new window('http://localhost:3000', "./build/index.html", 800, 600)
mainWindow.on("closed", () => (mainWindow = null));
}
app.on("ready", createWindow);
app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.quit();
}
});
app.on("activate", () => {
if (mainWindow === null) {
createWindow();
}
});
Итак, когда я запускаю приложение по команде yarn start
, оно запускается и работает. Это потому, что это среда разработки. Однако, когда я создаю dist, запустив yarn build
, появляется следующая ошибка:
Uncaught Exception:
Error: Cannot find module '/Volumes/electron-react-parcel 1.0.0 1/electron-react-parcel.app/Contents/Resources/app.asar/src/electron_components/window'
Require stack:
- /Volumes/electron-react-parcel 1.0.0 1/electron-react-parcel.app/Contents/Resources/app.asar/src/electron.js
-
at Module._resolveFilename (internal/modules/cjs/loader.js:797:17)
at Function../lib/common/reset-search-paths.ts.Module._resolveFilename (electron/js2c/browser_init.js:7736:16)
at Module._load (internal/modules/cjs/loader.js:690:27)
at Module._load (electron/js2c/asar.js:738:28)
at Function.Module._load (electron/js2c/asar.js:738:28)
at Module.require (internal/modules/cjs/loader.js:852:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (/Volumes/electron-react-parcel 1.0.0 1/electron-react-parcel.app/Contents/Resources/app.asar/src/electron.js:5:16)
at Module._compile (internal/modules/cjs/loader.js:967:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1004:10)
Очевидно, что-то не так с импортом компонента, и поэтому можно с уверенностью предположить, что оператор импорта для window class
в верхней части файла electron.js
неверно. Я не уверен, где я ошибаюсь, но ваша помощь будет отличной.
Спасибо