Потерпите меня, здесь вроде как двое. Во-первых, правильно ли я думаю, что если мой основной JS настроен таким образом ...
const myModule = require('./myModule');
let parentVar = 'foo';
myModule.test();
..и я настроил требуемый модуль вот так ..
module.exports = {
test: ()=>{
console.log(parentVar);
}
}
..то когда основной сценарий вызывает myModule.test()
, он должен выдавать ошибку, поскольку не может получить доступ к parentVar
? Это был мой опыт и понимание работы с модулями в традиционных веб-сборках.
Теперь я создаю приложение Electron (используя Electron Forge), и здесь я могу вызвать myModule.test()
, и оно преуспевает, имея доступ к переменной, объявленной в основном скрипте. .
Я пытаюсь понять, почему это так, и вижу два различия, которые могут иметь значение, а могут и не иметь.
- Я не использую webpack / babel, поэтому JS находится в необработанном виде, с которым я обычно не работаю.
- Мои инструкции
require()
работают только в том случае, если я указываю полный путь относительно корня приложения, а не файла, выполняющего требуемые.
Может ли кто-нибудь объяснить, почему требуемый модуль может получить доступ к свойствам requirer в Electron?
Может ли кто-нибудь объяснить, почему мои операторы require работают только с корневыми относительными путями в Electron?
Спасибо всем :)
РЕДАКТИРОВАТЬ Все это происходит в рендерере. Основной JS загружается в мой index.html с использованием стандартного тега <script>
. Затем требуется модуль оттуда.
require
означает, что вы собираетесь использовать Node API в своем браузере - person tpikachu   schedule 23.04.2020require
работать в первую очередь. На самом деле ничего не сломано, просто кажется, что он ведет себя необычным образом. Боюсь, что если я пойду вперёд, не понимая почему, то позже выстрелу себе в ногу - person popClingwrap   schedule 24.04.2020