我正在尝试将一个模块扩展到另一个模块。
这是我的基本模块的代码,名为 add.js 。
var exports=module.exports={};
exports.tutorial=function()
{
console.log("Guru99 Tutotial")
}
名为 child.js
的扩展模块var Tutor=require('./add.js');
exports.NodeTutorial=function()
{
console.log("Node Tutorial")
function pTutor()
{
var PTutor=Tutor
PTutor.tutorial;
}
}
index.js 文件中的我在下面的代码中用来调用函数
app.get('/',function(req,res) {
var localTutor=require('./child.js');
localTutor.NodeTutorial();
localTutor.NodeTutorial.pTutor();
return res.send({error:true,message:'working'});
//res.render('html');
})
但它显示以下错误;
TypeError: localTutor.NodeTutorial.pTutor is not a function
at /var/www/html/nodejs/index.js:36:26
at Layer.handle [as handle_request] (/var/www/html/nodejs/node_modules/express/lib/router/layer.js:95:5)
at next (/var/www/html/nodejs/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/var/www/html/nodejs/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/var/www/html/nodejs/node_modules/express/lib/router/layer.js:95:5)
at /var/www/html/nodejs/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/var/www/html/nodejs/node_modules/express/lib/router/index.js:335:12)
at next (/var/www/html/nodejs/node_modules/express/lib/router/index.js:275:10)
at cors (/var/www/html/nodejs/node_modules/cors/lib/index.js:188:7)
at /var/www/html/nodejs/node_modules/cors/lib/index.js:224:17
at originCallback (/var/www/html/nodejs/node_modules/cors/lib/index.js:214:15)
at /var/www/html/nodejs/node_modules/cors/lib/index.js:219:13
at optionsCallback (/var/www/html/nodejs/node_modules/cors/lib/index.js:199:9)
at corsMiddleware (/var/www/html/nodejs/node_modules/cors/lib/index.js:204:7)
at Layer.handle [as handle_request] (/var/www/html/nodejs/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/var/www/html/nodejs/node_modules/express/lib/router/index.js:317:13)
如何在 index.js 中调用扩展模块中的函数?
答案 0 :(得分:1)
我真的不知道为什么你在导出中嵌套函数,你可以使用基本module.exports
来减少函数的链接。
下面是我能够解决的问题,除非你真的需要NodeTutorial
然后为它创建一个单独的函数。
child.js
var Tutor=require('./add.js');
module.exports = {
pTutor: function () {
var PTutor=Tutor
PTutor.tutorial();
}
}
或
var Tutor=require('./add.js');
exports.NodeTutorial = function () {
return function pTutor () {
var PTutor=Tutor
PTutor.tutorial();
}
}
index.js
app.get('/',function(req,res) {
const localTutor=require('./child.js');
console.log(localTutor.pTutor());
localTutor.pTutor();// use this or the higher order function
localTutor.NodeTutorial()() // higher order function
return res.send({error:true,message:'working'});
res.render('html');
})
我得到它Ptutor function
如果你真的需要NodeTutorial
答案 1 :(得分:0)
更新的答案:从index.js调用子函数
child.js
var Tutor=require('./add.js');
exports.NodeTutorial=function()
{
console.log("Node Tutorial");
return function pTutor()
{
var PTutor=Tutor
PTutor.tutorial();
}
}
Index.js
app.get('/',function(req,res) {
var localTutor=require('./child.js');
localTutor.NodeTutorial();
localTutor.NodeTutorial()();
return res.send({error:true,message:'working'});
})
答案 2 :(得分:0)
Child.js
var Tutor=require('./add.js');
exports.NodeTutorial=function()
{
return {newfunction: function(){ return Tutor.tutorial }};
}
Index.js
app.get('/',function(req,res) {
var localTutor=require('./child.js');
localTutor.NodeTutorial().newfunction()
return res.send({error:true,message:'working'});
})

答案 3 :(得分:0)
var Tutor=require('./Tutorial.js');
exports.NodeTutorial=function()
{
console.log("Node Tutorial")
this.pTutor = function() {
var PTutor=Tutor
PTutor.tutorial();
}
}