Приложение Electron, React и Parcel - PullRequest
0 голосов
/ 28 мая 2020

Я сейчас пытаюсь скомпилировать свое электронное приложение в 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 неверно. Я не уверен, где я ошибаюсь, но ваша помощь будет отличной.

Спасибо

1 Ответ

0 голосов
/ 10 июня 2020

Итак, я решил перейти на другой шаблон, в котором использовалась электронная кузница. Не отвечая на исходный вопрос. Это устранило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...