我在文件中声明了这样的函数:
File1:
module.exports = {
function1: function(callback){
//do some work
},
}
在另一个文件中,如果我导入File1并调用file1.function1,该函数运行,我得到结果。
虽然,如果我在File1中并声明另一个函数:
module.exports = {
function1: function(callback){
//do some work
},
function2: function(callback){
var result = function1...
}
}
在这种情况下,我没有定义function1。
为什么会这样?难道它不应该被称为独立于呼叫的位置吗?
答案 0 :(得分:4)
问题是您正在尝试从错误的范围访问function1。没有定义的" function1"范围内的变量。你只有module.exports.function1
const exportObject = {
function1: function(callback){
//do some work
},
function2: function(callback){
var result = exportObject.function1... // or this.function1
}
}
module.exports = exportObject;
应该工作
更新:还有一些例子:
function1() {
// this will be executed by example2
}
var example3 = {
function1: function () {
// this will be executed by example3
}
}
const exportObject = {
function1: function(callback){
// This will be executed by example1
},
function2: function(callback){
// example1
var result = exportObject.function1() // or this.function1()
// example2
var result = function1()
// example3
var result = example3.function1()
}
}
module.exports = exportObject;
答案 1 :(得分:3)
function1
不是变量。
这是您分配给module.exports
的对象的属性。
与此相比:
var foo = {
bar: 1
}
console.log(bar);
bar
是foo
的属性,而不是其自身的变量。
你必须这样对待它。
var foo = {
bar: 1
}
console.log(foo.bar);
function1
也是如此。
您需要将其作为对象属性访问:
var result = module.exports.function1();
答案 2 :(得分:0)
如果在文件1中创建函数module.exports.function1
,则在文件1中访问它的方式是module.exports.function1
。它有点长啰嗦。或者,您可以在文件1中创建它:
var function1 = function() {...};
module.exports.function1 = function1;
function1();
您可以继续在文件2中使用function1
:
var file1 = require('./file1');
file1.function1();