Упакованное приложение Electron не может найти локальный модуль - PullRequest
3 голосов
/ 17 марта 2020

У меня есть приложение Electron, основанное на шаблонном проекте "электронная реакция-шаблон". В моем приложении у меня есть класс в файле myClass.js в

app/utils/myClass.js

class MyClass {
// A bunch of stuff...
}
module.exports = MyClass;

Я ссылаюсь на этот класс в сценарии предварительной загрузки процесса визуализации.

app/utils/preload.js

const MyClass = require('./myClass.js');

Который я загружаю в фоновом рабочем процессе рендерера следующим образом:

const workerWindow = new BrowserWindow({
    show: false,
    webPreferences: {
      nodeIntegration: false,
      contextIsolation: true,
      preload: require('path').join(__dirname, 'utils', 'preload.js')
    }
  });

Когда я запускаю приложение в режиме разработки / отладки, Модуль MyClass найден просто отлично, и весь код работает. Тем не менее, когда я go для упаковки приложения (с использованием электронного компоновщика) и установки на Windows, запуск кода вызывает следующую ошибку:

{"code":"MODULE_NOT_FOUND","requireStack":["C:\\Users\\Cooper\\AppData\\Local\\Programs\\my-app\\resources\\app\\utils\\myClass.js","C:\\Users\\Cooper\\AppData\\Local\\Programs\\my-app\\resources\\app\\utils\\preload.js"]}

Почему-то приложение не может найти мой модуль MyClass, хотя я могу подтвердить, что файлы находятся в соответствующем каталоге в упакованном архиве .asar. Я пробовал много разных способов require использования MyClass, но безрезультатно.

Почему мое упакованное приложение не может найти мой модуль MyClass? Как я могу решить это? Стоит отметить, что в моем предзагрузке. У скрипта js нет проблем с другими зависимостями. Я могу сделать require('electron') без проблем, например.

1 Ответ

0 голосов
/ 17 марта 2020

В итоге проблема заключалась в том, что приложение не смогло найти модуль MyClass, но вместо этого не смогло найти зависимость внутри MyClass. Электронный строитель использует два пакета. json файлов. package. json в проекте root, который используется во время разработки и включает все мои зависимости, как и ожидалось, но также и второй /app/package.json, который используется для того, когда приложение упаковано и развернуто , Мне не хватало многих моих зависимостей.

https://www.electron.build/tutorials/two-package-structure

Добавление необходимых зависимостей в этот пакет вручную. Файл json решил проблему.

...