下午好。我是 Node 新手,不要对我太苛刻。从模块调用时返回函数值时遇到问题。
例如,有一个模块:
function GetTableData() {
var connection = mysql.createConnection({
host: setup.host,
user: setup.user,
password: setup.password,
database: setup.database
});
connection.connect();
var query = connection.query("SELECT * FROM tables", function (error, result) {
if (error) { console.log(error.message); throw error; }
jdata = JSON.stringify(result);
console.log('mod_mysql_GetTables:AppData:' + jdata);
return jdata;
});
connection.end(function () {
console.log('Connection Close!');
});
function GetTest(){
var x =5 ;
return x;
}
module.exports.GetTableData = GetTableData();
module.exports.GetTest = GetTest();
我使用 require() 在主 index.js 文件中调用此模块
var mod_mysql = require('./mod_mysql');
var tables = mod_mysql.GetTableData;
console.log(tables);
我最终得到未定义
我对 GetTest 函数做同样的事情,一切正常。
如果你在没有连接的情况下运行模块,那么一切正常,数据从 mysql 显示。
告诉我我做错了什么。
看,如果你导出一个模块,同时放在函数的末尾,
()
换句话说,调用函数,那么你导出的不是函数本身,而是它的执行结果。如果您在导出函数时不调用它,换句话说,不要在其名称后面加上
()
,那么您导出函数本身。因此,您可以在认为合适的时候运行它。例如, :工作示例:两个函数以不同的方式导出并以不同的方式使用。模块代码:
可执行代码: