我是nodejs的新手,我需要在nodejs中导出函数
db_function.js 文件
var mysql = require('mysql');
var config = require('./config.js');
var con = config.conn;
exports.is_valid_IP = {
function(IP,callback)
{
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM server_master", function (err, result, fields) {
if (err) throw err;
callback(result);
});
});
}
};
var mysql = require('mysql');
var config = require('./config.js');
var con = config.conn;
exports.is_valid_IP = {
function(IP,callback)
{
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM server_master", function (err, result, fields) {
if (err) throw err;
callback(result);
});
});
}
};
app.js 文件
app.get('/test',function(req,res){
var IP = 1;
db.is_valid_IP(IP,function(result){
console.log(result);
});
});
显示错误无法调用未定义的方法'connect'
答案 0 :(得分:2)
让我总结一下评论:
您正确导出。这不是你的问题所在
由于db_function.js
中未定义con
,因此会出现此问题。
即使您在app.js
中声明它,javascript也会正确地隔离两个上下文(app.js
与db_function.js
)。
我们在这里讨论不同的文件,但即使在相同的文件中也可以进行上下文保存
var functionOne = function(){
var con = 1;
}
console.log(con) // undefined err, because con is declared inside the function
即使您调用该功能
var functionOne = function(){
var con = 1;
}
functionOne();
console.log(con) // undefined err, because con is long gone as soon as function returns
con
只会在函数返回之前生效。
如果您想告诉is_valid_IP
要使用哪种连接,只需按以下步骤更新您的代码:
db_function.js文件
exports.is_valid_IP = {
function(IP,con,callback)
{
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM server_master", function (err, result, fields) {
if (err) throw err;
callback(result);
});
});
}
};
然后在app.js文件中使用它,如下所示:
app.get('/test',function(req,res){
var IP = 1;
db.is_valid_IP(IP,con,function(result){
console.log(result);
});
});
答案 1 :(得分:1)
您可以这样导出:
enter code here
var funName = function() {
}
module.exports = funName;
答案 2 :(得分:0)
让我们简化问题,正如问题的标题所示,"如何在nodejs"中导出函数。如果我们只考虑如何在Node.js中导出函数,我们可以这样做:
./ db_function.js(我们导出函数isValidIp):
'use strict';
module.exports.isValidIp = function(ip, callback) {
console.log("Check if IP is valid.");
callback();
};
./ app.js
'use strict';
var db = require('./db_function');
// require() returns the object that module.exports references
db.isValidIp('127.0.0.1', function(){
console.log('Called back.');
});
使用命令node app.js
运行它,您将获得:
Check if IP is valid.
Called back.
一个警告
./ db_function.js(此版本不起作用):
'use strict';
exports = {
isValidIp: function(ip, callback) {
console.log("Check if IP is valid.");
callback();
}
};
您将获得TypeError:
TypeError: db.isValidIp is not a function
那是因为require()返回module.exports,而不是export。 exports只是module.exports的简写。如果将导出指向其他对象,则还应更新module.exports。以下版本将起作用:
'use strict';
exports = {
isValidIp: function(ip, callback) {
console.log("Check if IP is valid.");
callback();
}
};
module.exports = exports;