0

我是 Nodejs 的新手,对出口感到困惑。我已经阅读了许多 SO 问题和各种博客文章,但我缺少与 module.exports 和 require 语句相关的内容。我有一个像这样设置的服务器目录。

User/
|-- sqldb.js
|
|-- site1/
   |-- test.js
|
|-- site2/
   |-- foo.js
   |-- bar.js

sqldb.js 是一个管理 mysql 数据库连接池的模块,允许子站点同时访问父数据库。

--- sqldb.js ---

// ... code and stuff ... 

async function initDB(){
    console.log("Initializing database");
}

async function addPlayers(players) {
    console.log("Add Players: ", players);
}

module.exports = {
    initDB,
    addPlayers
}

在 test.js 中,我想require从父目录中获取 sqldb.js,这样我就可以调用 addPlayers 函数。

--- test.js ---

const {sqldb} = require('../sqldb.js');

console.log("sqldb: ", sqldb);

var players = ['Bob', 'Samantha'];

sqldb.addPlayers(players);

记录 sqldb 显示undefined然后调用addPlayers它会给出预期的TypeError: Cannot read property 'addPlayers' of undefined错误。

谁能提供一些有关如何解决此问题的见解?

4

1 回答 1

2

使用 const {sqldb} = require('../sqldb.js'); 指定命名导入。如果您的 sqldb.js 有一个名为 sqldb 的方法,则此方法有效。

由于您在 sqldb.js 中有默认导出,因此您必须使用:

默认导出:

const sqldb = require('../sqldb.js')

并访问 addPlayers - 使用 sqldb.addPlayers();

命名导出:

或者您也可以使用命名导出,例如:

const {addPlayers,initDB} = require('../sqldb.js');

然后你可以直接调用 addPlayers();

希望这可以帮助!

于 2020-03-24T16:49:15.177 回答