2017-08-08 91 views
0

//Connection.js(模块)是需要的。Node.Js导出变量问题

var mysql = require ('mysql'); 

var con ; 
con = mysql.createConnection ({ 
     host : 'localhost', 
     user : 'root' , 
     password : 'root', 
     database : 'mydb' 
}); 


exports.con = con; 

module.exports = con.connect (function (err) { 
     if (err) throw err; 
     console.log("Connected!"); 
    }); 

//controller.js

变种连接=要求( './connection'); var mysql = require('mysql');

console.log(connection.con); 
var sql = "Select * from user;"; 
connection.con.query(sql , function (err,result) { 
    if(err) throw err; 
    console.log(result); 
}); 

当我运行与它的工作原理相同的查询connection.js但controller.js使用的模块,它给我的错误。 //错误代码

TypeError: Cannot read property 'con' of undefined

回答

0

你的第一次尝试几乎是正确的。除此之外,

module.exports = con.connect (function (err) { 
    if (err) throw err; 
    console.log("Connected!"); 
}); 

通过这样做,你与con.connect()呼叫响应,这将覆盖先前分配con物业更换,exports。如果你删除它,你应该没问题!

var mysql = require ('mysql'); 

var con ; 
con = mysql.createConnection ({ 
    host : 'localhost', 
    user : 'root' , 
    password : 'root', 
    database : 'mydb' 
}); 


exports.con = con; 

con.connect (function (err) { 
    if (err) throw err; 
    console.log("Connected!"); 
}); 

供参考检查this(由@ Aky_0788共享)。

0
//Connection.js (module) that is require. 

var mysql = require ('mysql'); 

var con ; 
con = mysql.createConnection ({ 
    host : 'localhost', 
    user : 'root' , 
    password : 'root', 
    database : 'mydb' 
}); 

con.connect (function (err) { 
     if (err) throw err; 
     console.log("Connected!"); 
}); 

exports.con = con; 

controller.js

var connection = require ('./connection'); 
var mysql = require ('mysql'); 
console.log(connection.con); 
var sql = "Select * from user;"; 
connection.con.query(sql , function (err,result) { 
    if(err) throw err; 
    console.log(result); 
});