#javascript #npm #electron #assets
#javascript #npm #electron #ресурсы
Вопрос:
Предыстория
Я создал простую игру, чтобы научиться использовать Phaser 3 и TypeScript. Игра работает, когда я загружаю ее локально и запускаю. Я превратил игру в пакет, размещенный на github, вы можете увидеть его здесь. Моя идея заключалась в том, чтобы загрузить игру в виде пакета в приложении electron.
Итак, я создал приложение electron с шаблоном TypeScript и импортировал свою игру.
Некоторый код
Вот как я ввел свой пакет в файл electron renderer.ts
renderer.ts
import * as Phaser from "phaser";
import config from "@joe-lloyd/flappy-bird-phaser/lib";
const game = new Phaser.Game(config);
Проблема
Моя игра загружается при запуске, но вылетает с множеством ошибок, указывающих на то, что ресурсы не могут быть доступны.
Я чувствую, что мне не хватает чего-то фундаментального. Похоже, мой путь к ресурсам неверен. Кажется странным, что ресурсы не считываются относительно импорта пакета. Нужно ли мне связывать свои ресурсы по-другому или как-то еще?
Редактировать 1
Я добавил общедоступный путь к процессу сборки parcel, поэтому он выглядит так
"build:package": "parcel build index.ts --public-url ./lib --out-dir lib"
и это дает мне немного лучший результат в моем приложении electron. У меня есть часть пути, которая теперь имеет (немного) больше смысла.
Как вы видите, я все еще пропускаю эту часть node_modules@joe-lloydflappy-bird-phaser
Ответ №1:
Добавьте весь недостающий путь к вашему общедоступному пути
Я недоволен этим ответом, но я опубликую его, если кто-то столкнется с этим в будущем. Я бы с радостью принял что-то более солидное.
Чтобы исправить путь к своим ресурсам в моем приложении electron, я изменил общедоступный путь, включив в него модули узла и имя пакета.
Процесс сборки теперь выглядит следующим образом
"build:package": "parcel build index.ts --public-url ./node_modules/@joe-lloyd/flappy-bird-phaser/lib --out-dir lib"
Опять же, я бы предпочел что-то более стабильное, но это устранило мою ошибку.