Node.Js导出变量问题

时间:2017-08-08 09:15:47

标签: mysql node.js

//需要的Connection.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

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);
});

当我使用相同的查询运行connection.js时它可以工作但是当在controller.js中使用模块时它会给我错误。 //错误代码

  

TypeError:无法读取未定义

的属性'con'

3 个答案:

答案 0 :(得分:0)

做一点搜索或尝试一点点,你会得到你的答案。像这样 - How to provide a mysql database connection in single file in nodejs或者这 - Connecting to SQL Server from Nodejs

答案 1 :(得分:0)

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

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

通过这样做,您将exports替换为con.connect()调用响应,该响应会覆盖以前分配的con属性。如果你删除它,你应该没事!

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分享)。

答案 2 :(得分: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);
});