0

升级到 Express 3.0 后,我的节点应用程序出现了一些问题。所以,由于我正在重写它,我试图遵循它的风格,routes/index.js因为它看起来很干净。

所以,我主要app.js有一些变量,例如:

var calls = 0;
var agents = [];

并且还使用该node-mysql模块。但是,路由定义没有app.js范围,而是它们自己的范围,因此callsagents可见。

我应该如何让它们可见?

对于 mysql,我尝试了类似的方法:

// libraries/mysql.js
mysql = require('mysql');
var mysql_conf = {
    host: myhost,
    user: myuser,
    password: mypass,
    database: mydb
};
var mysql_client = mysql.createClient(mysql_conf);

exports.mysql_client;

//Later in routes/index.js
mysql_client = require('../helpers/mysql.js');

但它似乎不像它所说的那样工作TypeError: Object #<Object> has no method 'query'

请问有什么提示吗?

4

1 回答 1

2

线

exports.mysql_client;

实际上并不为 的mysql_client属性分配任何东西exports。它访问一个属性,并立即丢弃该值。你需要做这样的事情:

var mysql_client = mysql.createClient(mysql_conf);
exports.mysql_client = mysql_client;

// or simply

exports.mysql_client = mysql.createClient(mysql_conf);
于 2012-07-24T12:54:38.723 回答