gpt4 book ai didi

javascript - 从导出的模块访问函数(node.js)

转载 作者:行者123 更新时间:2023-12-03 08:13:43 24 4
gpt4 key购买 nike

我一直在阅读这方面的内容,显然有更多方法可以在 Node.js 中导出模块。

使用模块可以做的简单事情之一就是将函数封装在文件中,如下所示:

module.exports = {
sayHelloInEnglish: function() {
return "HELLO";
},

sayHelloInSpanish: function() {
return "Hola";
}
};

但是我想创建一些更多样化的模块,因此我创建了以下用户模块:

    var UserModule = function (socket) {
var userList = [];

socket.on('userData', function (userDetails) {
userDetails.socket = socket;
userList[userDetails.id] = userDetails
});

socket.on('getActiveUsers', function () {
socket.emit('activeUsers', userList);
});

function helloWorld (){
console.log('hello world');
}

};

module.exports = function (socket) {
return new UserModule(socket);
};

现在我需要在我的 io 实例中使用此模块:

    io.on('connection', function (socket) {
var my_user = userList.id;
socket.on('userData', function (userDetails) {
userDetails.socket = socket;
userList[userDetails.id] = userDetails
});


var userModule = require('./costum_modules/UserModule.js')(socket);
userModule.helloWorld();
var chatModule = require('./costum_modules/ChatModule.js')(socket, userModule);
var cacheModule = require('./costum_modules/CacheModule.js')(socket, userModule);
var notificationModule = require('./costum_modules/NotificationModule')(socket, sequelize, userList);

});

socket.on 方法在我的 UserModule 中工作正常,但是我无法调用函数 helloWorld。如果我尝试,我会收到以下错误:

userModule.helloWorld is not a function

所以我的问题是,我想做的事情可能吗?我如何能够在模块中存储对象函数等以供以后使用?

最佳答案

function helloWorld 本质上是一个在 userModule 中使用的私有(private)函数。

您可以通过将函数声明更改为以下内容来将其公开:

this.helloWorld = function (){
console.log('hello world');
}

关于javascript - 从导出的模块访问函数(node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34044485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com