无法访问自定义Node.js模块中的变量

问题描述 投票:0回答:1

我试图让一个模块包含游戏不同角色的信息,但每当我尝试从我创建的变量中接收数据时,它都是未定义的和/或我得到的错误类似于在数据中说出变量不存在(例如角色的名称)。

我看过一些教程做的很相似,但我似乎无法弄清楚我做错了什么。

我的索引文件。

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我可能做了一些完全错误的事情,但我似乎无法在任何地方找到答案。

javascript node.js
1个回答
0
投票

这个我因为Rolefunction而不是Object。你需要调用function来返回self。你应该将roleName设置为self的属性

var Role = (function() {
  var self = {};
  self.roleName = 'TestingRoleName';
  return self;
})();

或者您可以将Role更改为此。这是我推荐的方式

var Role = {
  roleName:'TestingRoleName'
}
© www.soinside.com 2019 - 2024. All rights reserved.