Не удается найти локальный модуль (файл js) в Electron - PullRequest
0 голосов
/ 19 января 2019

Я новичок в Electron и Node. Я не могу require() локальный файл .js от другого в Electron, и я не понимаю проблему. Я думаю, что мне не хватает чего-то довольно простого, но я не могу найти это.

Вот моя файловая структура:

/
package-lock.json
node_modules
main.js
package.json
game/
  ...
  test.js
  properties.js
assets/html/
  main_window.html
  • main.js загружает только main_window.html в электронное окно и не более того.
  • Я ссылаюсь на test.js из html-файла, используя <script src="../../game/test.js"></script>.
  • Вот test.js:

    const properties = require('./properties');
    ...
    
  • В ответ я получаю эту ошибку в консоли Dev Tools:

    Uncaught Error: Cannot find module './properties'
    

enter image description here

Когда я использую команду node test.js в папке game, файл импортируется, все работает просто отлично. Но когда я переключаюсь на Electron и использую npm start от root, я думаю, что мне нужен локальный файл .js, как положено, поставив точку и косую черту перед его именем. И несмотря на то, что он находится в той же папке, что и файл test.js, он не может найти properties.js.

Также package.json файл, на случай, если он понадобится:

{
  "name": "economy-board-game-electron",
  "version": "1.0.0",
  "description": "Recreation of that board game for educational purposes.",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "Edvin Boul",
  "license": "MIT",
  "dependencies": {
    "electron": "^4.0.1"
  }
}

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Путь может быть относительно файла html, попробуйте выполнить ../../game/properties, и если это сработает, подумайте о том, чтобы поместить основную точку входа html на тот же уровень, что и каталог игры -

Электрон не требует, чтобы файлы были структурированы каким-либо особым образом, но организационно может быть проще рассуждать об этом таким образом, чтобы вам не приходилось писать длинные пути возврата.

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

0 голосов
/ 19 января 2019

У меня была такая же проблема, и я попросил об этом около часа назад, только что получил правильный ответ (в комментариях): Проблема с требованием пользовательского модуля .

  • Удаляет ваш тег <script>, который ссылается на test.js из вашего HTML.
  • Экспортирует оба ваших файла JS с module.exports.Test = Test; и module.exports.Properties = Properties;. Эти инструкции должны быть в соответствующем файле и в конце. Я предполагаю, что ваши классы (или что вы хотите экспортировать) названы Test и Properties.

  • Требуется ./../../game/test в вашем HTML-файле, между <script> тегами. (не уверен насчет пути, но вам нужно начать с местоположения вашего HTML-файла)

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