在triyng中扩展nodejs

时间:2018-02-19 08:35:54

标签: node.js

我正在尝试将一个模块扩展到另一个模块。

这是我的基本模块的代码,名为 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 中调用扩展模块中的函数?

4 个答案:

答案 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();
    }  
}