Node.js如何导出多个函数?解决仅最后一个导出生效问题
解决Node.js模块导出多个方法的问题
错误原因分析
你遇到的问题来自三个核心错误:
- 拼写错误:Node.js中模块导出的正确属性是
module.exports(复数形式),你写成了module.export(单数),导致导出逻辑失效。 - 覆盖式赋值:直接多次给
module.exports赋值函数时,后一次赋值会完全覆盖前一次,最终只有最后一个方法被导出。 - 对象语法错误:尝试导出对象时,键值对应使用
:分隔,你错误地用了=,导致对象语法不合法。
正确的导出写法
方法1:导出包含多方法的对象(推荐)
修正拼写和对象语法,将所有方法封装在一个对象中导出:
// common.js module.exports = { getMethodOne: async () => { // 方法逻辑 }, getMethodTwo: async () => { // 方法逻辑 } };
方法2:逐个添加导出属性
通过给module.exports逐个添加属性的方式导出,避免覆盖问题:
// common.js module.exports.getMethodOne = async () => { // 方法逻辑 }; module.exports.getMethodTwo = async () => { // 方法逻辑 };
也可以用更简洁的exports快捷方式(注意:不能直接给exports赋值对象,只能添加属性):
// common.js exports.getMethodOne = async () => { // 方法逻辑 }; exports.getMethodTwo = async () => { // 方法逻辑 };
正确的引入写法
不要重复require同一个模块(Node.js会缓存模块,两次require拿到的是同一个对象),正确引入方式如下:
方式1:解构赋值(简洁直观)
// main.js const { getMethodOne, getMethodTwo } = require("./common.js");
方式2:先引入模块对象再取属性
// main.js const commonMethods = require("./common.js"); const getMethodOne = commonMethods.getMethodOne; const getMethodTwo = commonMethods.getMethodTwo;
内容的提问来源于stack exchange,提问作者Sadeepa Medhan
相关产品推荐
相关产品推荐

