Как получить доступ к изображению и звукам из опубликованного мной пакета npm?

#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"
  

Опять же, я бы предпочел что-то более стабильное, но это устранило мою ошибку.