我创建了一个如下模块:
module.exports = function() {
function func1 () {
}
function func2 () {
}
return function() {
func1();
func2();
return value;
};
}
当我在另一个文件中调用模块时
myModule = require('myModule')
使用模块
myModule()
我得到一个未定义的值。我错了什么?
答案 0 :(得分:2)
您正在导出一个函数,该函数在被调用时返回另一个函数,而该函数反过来会抛出ReferenceError
,表示value
未定义,您可以通过定义value
来缓解这个函数。
return function() {
func1();
func2();
return 1; //for example
};
要运行它,您需要调用它两次。
myModule()();
>> 1
我的猜测是你只想要返回的值,所以将它包装在IIFE
中module.exports = function () {
return (function() {
func1();
func2();
return 1; //for example
})();
}
答案 1 :(得分:1)
如果您希望myModule()
返回一个值,则可以导出IIFE:
module.exports = function () {
function func1() {
}
function func2() {
}
return function () {
func1();
func2();
return value;
}();
}