我是 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 显示未定义
,然后对其调用addPlayers
会出现预期的TypeError:无法读取未定义的属性“addPlayers”
错误。
任何人都可以提供一些有关如何解决此问题的见解吗?
最佳答案
使用 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();
希望这有帮助!
关于javascript - 如何在 Nodejs 中正确从父目录导出和 require ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60835422/