我是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();
希望这可以帮助!