Я пытаюсь работать над приложением Electron и испытываю проблемы с попыткой потребовать модуль из другого скрипта, запущенного в окне браузера Chromium. Независимо от того, что я делаю, чтобы указать относительный путь, я всегда сталкиваюсь с той же ошибкой, что не могу найти модуль.Электронно-требующий модуль в сценарии Chromium
Мой проект настроен так:
index.html
scripts
controllers
controller.js
models
game.js
tests
spec
gameSpec.js
Мой index.html, который является страница воспитан по умолчанию, когда электронные пуски, загружает controller.js как обычный сценарий в конце тела тег.
<script src="scripts/controllers/controller.js"></script>
controller.js имеет следующий код: в верхней части
var Game = require("../models/game.js");
.... some other code .....
var game = new Game();
При запуске окно электронного Chromium, я сразу же столкнулись с этой проблемой:
Uncaught Error: Cannot find module '../models/game.js'
Мое предположение, что Мне нужен относительный путь от файла controller.js к файлу game.js, который он импортирует, но независимо от того, какую настройку я делаю, я всегда получаю эту ошибку. Я не думаю, что это просто ошибка синтаксиса, так как у меня есть спецификации при тестах папки все работает, и прохождение которых успешно использует требуют, как это:
var Game = require("../../models/game.js");
describe("Game", function() { ... });
Могу ли я сделать неверное предположение о том, как требуется относительное Pathing является выполняется при исполнении браузера Chromium? Любая помощь приветствуется!
Спасибо за ваш ответ! К сожалению, не работает, что приводит к той же ошибке. К счастью, ваше предложение для var Game = require (__ dirname ....) работает как шарм, хотя я согласен, что он выглядит хрупким и меня беспокоит, что произойдет, когда я хочу упаковать приложение. Я конвертирую этот проект из .Net без узла, поэтому я пытаюсь выполнить шаги в процессе миграции. – user1433070
Проблема в том, что 'controller.js' является модулем CommonJS/Node, но' 'ничего не знает о модулях CommonJS, он просто загрузит содержимое файл в текущий документ, не проходя через загрузчик модуля Node. Поскольку @dvlsg указал, что правильный способ загрузки 'controller.js' - это использовать' require'. –