我试图让一个模块包含游戏中不同角色的信息,但是每当我尝试从我创建的变量中接收数据时,它都是未定义的,并且/或者我在说类似变量时出错里面的数据不存在(例如角色的名称)。
我看过很多教程都做了类似的事情,但是我似乎无法弄清楚我做错了什么。
我的索引文件。
var express = require('express');
var app = express();
var serv = require('http').Server(app);
var RoleList = require('./_modules/RoleList');
var Socket = function() {}
Socket.list = {};
serv.listen(process.env.PORT || 4567);
console.log("Server started.");
var io = require('socket.io')(serv, {});
io.sockets.on('connection', function(socket) {
socket.id = Math.random();
Socket.list[socket.id] = socket;
console.log('Player Connected');
console.log('Role Name: ' + RoleList.testRole.roleName);
socket.on('disconnect', function() {
delete Socket.list[socket.id];
console.log('Player Disconnected');
});
});
RoleList模块
var Role = function() {
var self = {};
var roleName = 'TestingRoleName';
return self;
}
modules.exports = {
roleTest: Role
}
但是在运行服务器时,我得到了结果。
Server started.
Player Connected
T:undefined
代替
T:TestingRoleName
有人可以帮助吗?我非常感谢:D我可能做的是完全错误的事情,但是我似乎在任何地方都找不到答案。
答案 0 :(得分:0)
这是因为Role
是function
而不是Object
。您需要致电function
返回self
。并且您应该将roleName
设置为self
var Role = (function() {
var self = {};
self.roleName = 'TestingRoleName';
return self;
})();
或者您可以更改Role
。这是我推荐的方式
var Role = {
roleName:'TestingRoleName'
}