我的app.js内容:
var greet3=require('./greet3');
greet3.greet();
我的greet3.js内容
function Greetr(){
this.greeting='greet3';
this.greet=function(){
console.log(this.greeting);
}
}
module.exports=new Greetr();
我的控制台窗口输出:greet3
但是当我将app.js的内容更改为:
var greet3=require('./greet3');
greet3();
我得到的输出为'undefined'
我是node.js的初学者,正在尝试使用不同的模块模式。我需要有关为什么我得到未定义结果的帮助
答案 0 :(得分:1)
给出上面的模块,行
var greet3=require('./greet3');
基本上变为:
var greet3 = {
greeting: "greet3",
greet: function(){
console.log(this.greeting);
}
}
因此在app.js中,greet3
现在是一个对象。 greet3.greet();
正常工作,并记录"greet3"
。
但是greet3()
不是函数,因此greet3 is not a function
会产生greet3
。
答案 1 :(得分:0)
您正在导出初始化的对象,当您设置var greet3 = require('./ greet3')并调用greet3()时,您试图将该对象用作函数,因此它表示未定义。
答案 2 :(得分:0)
更改greet3.js
中的代码:
module.exports = function(){
this.greeting='greet3';
this.greet=function(){
console.log(this.greeting);
}
}
答案 3 :(得分:0)
正如其他人之前所说,您的代码按预期运行。 您的模块:
function Greetr(){
this.greeting='greet3';
this.greet=function(){
console.log(this.greeting);
}
}
module.exports=new Greetr();
返回一个对象,但我认为您想返回一个函数,因此最后一行应如下所示:
module.exports=Greetr;
代替此:
module.exports=new Greetr();
因为现在您打电话:
var greet3=require('./greet3');
greet3();
它将功能Greetr的对象分配给变量greet3,并且您无法调用对象。