节点的 module.exports 作为空对象返回
Node's module.exports comes back as an empty object
我正在尝试为 grunt 构建过程构建一些实用程序模块。显然我对模块系统的工作方式感到困惑,但这是我所拥有的(因为它无关紧要而忽略了功能逻辑):
var modifiers = {
task: function(grunt){
//logic...
}
}
var modify = function(grunt){
modifiers.task();
}
module.exports = {
modify: modify
};
然后从调用文件中:
var modifiers = require('./modifiers');
// later in file....
grunt.log.writeln(JSON.stringify(modifiers)); //outputs: {}
所以日志调用输出一个空对象。调用modifiers.modify报错:
Warning: modifiers.modify is not a function
我完全不知道 module.exports 是如何工作的吗?我在其他文件中使用它来导出函数,但我真的需要这里的整个私有变量语义。
我还尝试将 module.exports 设置为一个自调用函数,该函数 return 是一个对象,以及其他东西——但无济于事。我怎样才能得到它 return 修饰符对象?它需要可扩展,因此我想要 return 一个对象。
任何帮助都是巨大的。谢谢
JSON.stringify()
不会序列化函数属性,因此由于您的 modifiers
对象只有一个 属性 是一个函数,JSON.stringify()
显示一个空对象。
这样的测试:
console.log(modifiers);
或
console.log(modifiers.modify);
如果您的模块工作正常,将显示您期望的内容。
如果调用 modifiers.modify()
产生错误,那么您一定在加载 ./modifiers
模块时出错,并且您的控制台在加载它时应该会显示某种错误。
我正在尝试为 grunt 构建过程构建一些实用程序模块。显然我对模块系统的工作方式感到困惑,但这是我所拥有的(因为它无关紧要而忽略了功能逻辑):
var modifiers = {
task: function(grunt){
//logic...
}
}
var modify = function(grunt){
modifiers.task();
}
module.exports = {
modify: modify
};
然后从调用文件中:
var modifiers = require('./modifiers');
// later in file....
grunt.log.writeln(JSON.stringify(modifiers)); //outputs: {}
所以日志调用输出一个空对象。调用modifiers.modify报错:
Warning: modifiers.modify is not a function
我完全不知道 module.exports 是如何工作的吗?我在其他文件中使用它来导出函数,但我真的需要这里的整个私有变量语义。
我还尝试将 module.exports 设置为一个自调用函数,该函数 return 是一个对象,以及其他东西——但无济于事。我怎样才能得到它 return 修饰符对象?它需要可扩展,因此我想要 return 一个对象。
任何帮助都是巨大的。谢谢
JSON.stringify()
不会序列化函数属性,因此由于您的 modifiers
对象只有一个 属性 是一个函数,JSON.stringify()
显示一个空对象。
这样的测试:
console.log(modifiers);
或
console.log(modifiers.modify);
如果您的模块工作正常,将显示您期望的内容。
如果调用 modifiers.modify()
产生错误,那么您一定在加载 ./modifiers
模块时出错,并且您的控制台在加载它时应该会显示某种错误。