Javascript 如何在Node.JS中正确编写模块?

Javascript 如何在Node.JS中正确编写模块?,javascript,node.js,Javascript,Node.js,因此,我正试图做到这一点,这样当我可以将连接和runQuery函数放在一个文件中,并且只需要放在另一个文件中时,我就不必有多个数据库连接。下面是我的“mysql.js”文件中的内容 以下是我希望在我的文件中要求它的方式: const { connection, runQuery } = require('./functions/mysql') 我这样做对吗?我对整个模块都不熟悉。我一直在尝试分割我的文件,因为一个包含3000多行的index.js是疯狂的。谢谢你的帮助。不,你做得不对。您所做的

因此,我正试图做到这一点,这样当我可以将连接和runQuery函数放在一个文件中,并且只需要放在另一个文件中时,我就不必有多个数据库连接。下面是我的“mysql.js”文件中的内容

以下是我希望在我的文件中要求它的方式:

const { connection, runQuery } = require('./functions/mysql')

我这样做对吗?我对整个模块都不熟悉。我一直在尝试分割我的文件,因为一个包含3000多行的index.js是疯狂的。谢谢你的帮助。

不,你做得不对。您所做的是将其导出为默认值,但您希望导出命名函数。你可以这样做:

const mysql = require("mysql");

let connection = mysql.createConnection({
  host: "81.19.215.6",
  user: "voltclou_site",
  password: "yogO{6,F@8WS",
  database: process.env.database
});

connection.connect(function(err) {
  if (err) {
    console.error("[DATABASE] Error connecting: " + err.stack);
    return;
  }
  console.log("[DATABASE] Connected as id " + connection.threadId);
});

async function runQuery(query, values) {
  return new Promise((resolve, reject) => {
    connection.query(query, values, function(error, results) {
      if (error) return reject(error);
      return resolve(results);
    });
  });
}

module.exports = {
  connection,
  runQuery
};

不,你做得不对。您所做的是将其导出为默认值,但您希望导出命名函数。你可以这样做:

const mysql = require("mysql");

let connection = mysql.createConnection({
  host: "81.19.215.6",
  user: "voltclou_site",
  password: "yogO{6,F@8WS",
  database: process.env.database
});

connection.connect(function(err) {
  if (err) {
    console.error("[DATABASE] Error connecting: " + err.stack);
    return;
  }
  console.log("[DATABASE] Connected as id " + connection.threadId);
});

async function runQuery(query, values) {
  return new Promise((resolve, reject) => {
    connection.query(query, values, function(error, results) {
      if (error) return reject(error);
      return resolve(results);
    });
  });
}

module.exports = {
  connection,
  runQuery
};

您描述的值,
{connection,runQuery}
,应该是分配给
模块的值。exports

const mysql = require('mysql');

let connection = mysql.createConnection({ ... });
connection.connect(...);
let runQuery = async (query, values) => { ... };

module.exports = { connection, runQuery };

如果您在其他地方只需要
运行查询
,那么您甚至可能不需要导出
连接

您描述的值,
{connection,runQuery}
,应该是分配给
模块的值。exports

const mysql = require('mysql');

let connection = mysql.createConnection({ ... });
connection.connect(...);
let runQuery = async (query, values) => { ... };

module.exports = { connection, runQuery };

如果您在其他地方只需要
运行查询
,那么您甚至可能不需要导出
连接

不,您需要删除当前的
module.exports=function(){。将此正文保持在顶级..}
并在文件底部添加
module.exports={connection,runQuery}请注意,您已经在此处共享了登录详细信息。如果该密码在任何地方使用,我建议您现在更改它。感谢您的提醒,我刚刚更改了该帐户的密码。不,您需要删除当前的
module.exports=function(){。将此正文保持在顶级..}
并在文件底部添加
module.exports={connection,runQuery}请注意,您已经在此处共享了登录详细信息。如果该密码在任何地方使用,我建议您立即更改。谢谢提醒,我刚刚更改了该帐户的密码。