Javascript 为什么服务器不访问连接变量?

Javascript 为什么服务器不访问连接变量?,javascript,node.js,Javascript,Node.js,我正在尝试使用Node.js restify框架从数据库检索数据。服务器运行正常,但访问时出现以下错误: { "code": "InternalError", "message": "connectionPool is not defined" } 这是我的密码: server.js require('./app/core/routes.js'); var restify=require('restify'); var fs=require('fs'); var controller

我正在尝试使用Node.js restify框架从数据库检索数据。服务器运行正常,但访问时出现以下错误:

{
  "code": "InternalError",
  "message": "connectionPool is not defined"
}
这是我的密码:

server.js

require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
     controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
    if (file.indexOf('.js') != -1) {
        controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
    }
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
    if (err)
        console.error(err);
    else
        console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
}
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool =  something2.something(); //notice here
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};
routes.js

require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
     controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
    if (file.indexOf('.js') != -1) {
        controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
    }
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
    if (err)
        console.error(err);
    else
        console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
}
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool =  something2.something(); //notice here
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};
article.js

require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
     controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
    if (file.indexOf('.js') != -1) {
        controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
    }
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
    if (err)
        console.error(err);
    else
        console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
}
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool =  something2.something(); //notice here
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};
connection.js

require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
     controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
    if (file.indexOf('.js') != -1) {
        controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
    }
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
    if (err)
        console.error(err);
    else
        console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
}
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool =  something2.something(); //notice here
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};

您必须在
connection.js
函数中返回变量
connectionPool

connection.js

require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
     controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
    if (file.indexOf('.js') != -1) {
        controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
    }
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
    if (err)
        console.error(err);
    else
        console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
}
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool =  something2.something(); //notice here
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};
article.js

require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
     controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
    if (file.indexOf('.js') != -1) {
        controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
    }
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
    if (err)
        console.error(err);
    else
        console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
}
var mysql = require('mysql');
exports.something = function () {
    var connectionPool = mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool =  something2.something(); //notice here
exports.printHello= function(req, res, next){
    connectionPool.getConnection(function (err, connection) {
        if (err) {
            res.send({
                Error: err,
                Message: "Can't connect Database."
            });
        } else {
            //queries
            connection.query("SELECT * FROM book", function (err, rows, fields) {
                res.send({
                    json: rows
                });
            });
        }
    });
};

在connection.js文件中,导出池

var mysql = require('mysql');
exports.connectionPool = function() {
    return mysql.createPool({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'books'
    });
}
然后在article.js文件中使用它

var conn = require('../core/connection.js');
var pool = conn.connectionPool();

exports.printHello = function(req, res, next){
    pool.getConnection(function (err, connection) {
        if (err) { ...

错误似乎是正确的,
connectionPool
没有定义,它是在不同的文件中定义的,但这没有多大帮助?您能告诉我如何修复它吗?控制台还说了什么吗?我不想在同一个文件中写连接代码。我想“包括”它。CMD控制台说:“服务器正在运行”。Chrome的控制台:加载资源失败:服务器响应状态为500(内部服务器错误),我会尝试告诉你。你确定可以吗?我得到的错误“conn.connectionPool()`不是函数。您是对的,它是
createPool
返回的任何内容。把它包装在函数中,现在试试。你能回答这个问题吗@Vikas Kumar我一开始就给了你正确的答案非常感谢你。我应该这么想。很高兴这有帮助:)你知道restify和mysql吗?也许我可以帮你,你的问题是什么?