使用从另一个模块(node.js)导入的函数

时间:2019-03-06 12:47:50

标签: node.js

这是我从中导出函数的db.js

 var mysql=require('mysql');

var config=
{
    host:'127.0.0.1',
    user:'root',
    password:'',
    database:'travel'

};
var con="";
var data=function getConnection() 
{
    con=mysql.createConnection(config);
    con.connect(function(err)
    {
        if(err!=null)
        {
            console.log('connection id: '+con.threadId);
        }
        else
        {
            console.log('connection error: '+err.stack);

        }
    })
};
module.exports=data;

这是我的login.js文件,我从该文件中调用导出的数据功能

var express=require('express');
var db = require.main.require('./model/db');
var router=express.Router();

//routes
router.post('/',function(req,res)
{
    console.log(req.body);

});

router.get('/',function(req,res)
{
   data();
   res.render('login');
});

module.exports = router;

这是运行代码后的错误消息。有人可以帮我解决这个问题吗?

error message

2 个答案:

答案 0 :(得分:0)

您应按以下方式更改导入语句,因为您是在调用data()而不是db()。因此您应该将import语句更改为data而不是db

var data = require.main.require('./model/db');

答案 1 :(得分:0)

使用module.exports时,您要指定要导出的对象,而不是名称或一组名称。由于您实际上只是导出要使用的data函数,因此行var db = require.main.require('./model/db');首先创建/查找该函数,然后将其分配给变量db -原始名称不根本没有关系。

可能的解决方案(如其他答案所示)包括将data()替换为db()或将var db替换为var data