【发布时间】:2015-07-04 10:43:46
【问题描述】:
我最近开始编写 CommonJS 模块,但在需要模块时遇到了问题。为什么 storage.js 无法访问我需要的示例模块?在这种情况下需要依赖模块的正确方法是什么?
编辑:包含更多信息,因为上一个问题省略了 hello.js,我认为这不是问题的原因。似乎包括它会导致未捕获的类型错误。另外,这是 chrome 扩展代码的一部分,main.js 是内容脚本。
// main.js
var hello = require('./hello');
var storage = require('./storage');
var example = require('./example');
storage.store();
// storage.js
var example = require('./example');
module.exports = (function() {
function store() {example.ex();}
return {store: store};
})();
// example.js
var storage = require('./storage');
module.exports = (function() {
function ex() {
console.log('example');
}
return {ex: ex};
})();
// hello.js
var example = require('./example'); // <<<< Including this gives Uncaught TypeError: example.ex is not a function
module.exports = (function() {
function hello() {
console.log('hello');
}
return {hello:hello};
})();
【问题讨论】:
-
var storage是否在全局范围内? -
按原样粘贴代码(仅插入函数控制台输出以检查调用的内容),一切正常,没有任何错误
-
与@dajnz 相同。你的 package.json 或 dotfiles 中是否有任何 browserify 或 webpack 覆盖?
-
对于 browserify,我只进行了转换 - browserify-shim,没有别的
标签: javascript google-chrome-extension browserify commonjs