【问题标题】:Express JS how to include node-mysql object from a different fileExpress JS 如何包含来自不同文件的 node-mysql 对象
【发布时间】:2014-07-22 19:47:32
【问题描述】:

我想在同一个文件中包含我的 mysql 连接(以防我必须更改 sql 密码或我不想在许多文件中更改的任何内容)。

这是我的 mysql.js 文件:

module.exports = require('mysql').createConnection(
  {
      host     : 'localhost',
      user     : 'admin',
      password : 'xxxxxxxx',
      database : 'database'
  }

);

我想这样使用:

var connection = require(__dirname + '/../../../mysql');
connection.connect();
.
.
.

我的问题是它只能工作一次。当我启动服务器时,我可以毫无问题地查询,但在第二个查询中,我在控制台中收到以下错误消息:

"Cannot enqueue Handshake after invoking quit."

有人知道为什么不工作吗?

【问题讨论】:

    标签: mysql node.js express node-mysql


    【解决方案1】:

    显然您不再需要在 createConnection() 之后调用 connect(),如果您愿意,它将在查询时为您处理。

    来自文档:

    但是,也可以通过调用 查询:

    var mysql = require('mysql'); var connection = mysql.createConnection(...);

    connection.query('SELECT 1', function(err, rows) { // 已连接! (除非设置了err)});

    取决于你喜欢如何处理你的 错误,任何一种方法都可能是合适的。任何类型的连接错误 (握手或网络)被认为是致命错误,请参阅错误 处理部分了解更多信息。

    除此之外,您可能在同一个连接上调用 end() 之前调用了 connect(),您可能需要检查一下。

    【讨论】:

      【解决方案2】:

      感谢帮助,但我找到了解决问题的方法。我刚刚在我的 mysql.js 文件上创建了变量,然后我像这样导出它们:

      var host = 'localhost';
      module.exports.localhost = localhost;
      

      我可以在另一个js文件上使用它之后:

      var connection = require(__dirname + '/../../../mysql');
      
      connection.localhost;
      

      我在这篇文章中找到了它: http://openmymind.net/2012/2/3/Node-Require-and-Exports/

      【讨论】:

        猜你喜欢
        • 2019-01-31
        • 2019-08-28
        • 2014-01-19
        • 2014-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-05
        • 2017-02-16
        相关资源
        最近更新 更多