也许这并不是JS模块的CommonJS实现特有的,但我的问题是关于范围如何与导入模块一起工作。
CommonnJS:foo.js
var foo = {
bar() {
baz();
}
}
module.exports = foo;
主要JS
const foo = require('./foo.js');
function baz() {
console.log('this is baz');
}
foo.bar();
//-> ReferenceError: baz is not defined
通常情况下,我希望找到baz,但似乎模块范围完全是孤立的。那是对的吗?在我尝试做的事情中,有没有办法或最佳做法?
答案 0 :(得分:1)
与webpack无关。
javascript模块只有本地上下文
如果您希望某些内容成为全局/窗口上下文的一部分,则可以使用global
变量
global.baz = baz;
或者更好的是,使用依赖注入来传递回调:
var foo = {
bar(baz) {
baz();
}
}
然后可以使用它:
foo.bar(baz);