Как работает область в Webpack с CommonJS
Возможно, это не относится к реализации CommonJS модулей JS, но мой вопрос о том, как работает область действия с импортом модуля.
CommonnJS: foo.js
var foo = {
bar() {
baz();
}
}
module.exports = foo;
Main JS
const foo = require('./foo.js');
function baz() {
console.log('this is baz');
}
foo.bar();
//-> ReferenceError: baz is not defined
Обычно я ожидаю, что база будет найдена, но кажется, что область видимости модуля полностью изолирована. Это верно? Есть ли способ или лучшая практика в том, что я пытаюсь сделать?
1 ответ
Решение
Ничего общего с веб-пакетом.
Модули JavaScript имеют только локальный контекст
Если вы хотите, чтобы что-то было частью глобального / оконного контекста, вы можете использовать global
переменная
global.baz = baz;
Или лучше использовать инъекцию зависимостей для передачи ваших обратных вызовов:
var foo = {
bar(baz) {
baz();
}
}
Тогда можете использовать это:
foo.bar(baz);