如何从 Nodejs 的父目录中正确导出和要求?
How to properly export and require from parent directory in Nodejs?
我是 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
错误。
任何人都可以提供一些关于如何解决此问题的见解吗?
使用 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();
希望对您有所帮助!
我是 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
错误。
任何人都可以提供一些关于如何解决此问题的见解吗?
使用 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();
希望对您有所帮助!