我是Nodejs的新手,对出口感到困惑。我已经阅读了许多SO问题和各种博客文章,但我缺少与module.exports相关的内容,并且需要声明。我已经建立了这样的服务器目录。

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错误。

谁能提供一些解决方法的见解?

最佳答案

使用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();

希望这可以帮助!

09-07 17:31