https://github.com/Jazzepi/bunny-tracker
Я работаю над небольшой локализованной базой данных для некоммерческой организации «Спасение кроликов в Огайо» (они великолепны) и борюсь с развернутой версией приложения «Электрон».
Когда я передаю сообщения от средства визуализации основному процессу, часто я передаю целые объекты Typescript. Я хотел бы использовать эти определения Typescript в основном процессе, не копируя их вручную. Вы можете увидеть этот импорт здесь. Все, что поступает из импорта, начинающегося с ./src/
, извлекается из "пользовательских" модулей ES.
https://github.com/Jazzepi/bunny-tracker/blob/master/main.ts
import { app, BrowserWindow, ipcMain, Menu, MenuItem, MenuItemConstructorOptions, screen, shell } from 'electron';
import * as path from 'path';
import * as url from 'url';
import * as moment from 'moment';
import Bunny from './src/app/entities/Bunny';
import * as sqlite from 'sqlite';
import { Database } from 'sqlite';
import * as log from 'electron-log';
import SQL from 'sql-template-strings';
import IPC_EVENT from './src/app/ipcEvents';
import GENDER from './src/app/entities/Gender';
import RESCUE_TYPE from './src/app/entities/RescueType';
Ошибка, которую я получаю при запуске готового образа приложенияэто. Я получаю этот образ в Linux, используя app-image, и в Mac, используя dmg.
ohrr@ohrr:~/repos/bunny-tracker$ release/bunny-tracker-2.0.0-x86_64.AppImage
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Cannot find module './src/app/ipcEvents'
Require stack:
- /tmp/.mount_bunny-45gwlx/resources/app.asar/main.js
-
at Module._resolveFilename (internal/modules/cjs/loader.js:659:15)
at Function.Module._resolveFilename (/tmp/.mount_bunny-45gwlx/resources/electron.asar/common/reset-search-paths.js:43:12)
at Function.Module._load (internal/modules/cjs/loader.js:577:27)
at Module.require (internal/modules/cjs/loader.js:715:19)
at require (internal/modules/cjs/helpers.js:14:16)
at Object.<anonymous> (/tmp/.mount_bunny-45gwlx/resources/app.asar/main.js:50:19)
at Module._compile (internal/modules/cjs/loader.js:808:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:820:10)
at Module.load (internal/modules/cjs/loader.js:677:32)
В режиме разработки все работает нормально, но не может найти модули в рабочих развертываниях.
Я читал о пользовательских протоколах по ссылкам ниже, но они, похоже, больше позволяют вам получать значения из пользовательских схем URL, и я хочу import
что-то, что не возиться с HTML.
Импорт электронного модуля ES6 https://github.com/electron/electron/issues/12011 https://gist.github.com/smotaal/f1e6dbb5c0420bfd585874bd29f11c43
Любая помощь с ответом или даже просто направление меня в нужном направлении было бы здорово! Мое решение, если я не могу понять это, - это символическая ссылка импортированных пользователем модулей в пространство, из которого фактически может импортировать основной процессор.