簡體   English   中英

無法訪問自定義Node.js模塊中的變量

[英]Can't access variable in custom Node.js module

我試圖讓一個模塊包含游戲中不同角色的信息,但是每當我嘗試從我創建的變量中接收數據時,它都是未定義的,並且/或者我在說類似於數據內變量的操作時出現錯誤不存在(例如角色名稱)。

我看過很多教程都做過類似的事情,但是我似乎無法弄清楚自己做錯了什么。

我的索引文件。

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

有人能幫忙解決這個問題嗎? 我非常感謝:DI很可能在做完全錯誤的事情,但是我似乎在任何地方都找不到答案。

這是因為Role是一個function而不是Object 您需要調用function返回self 並且您應該將roleName設置為self屬性

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

或者您可以將Role更改為此。這是我推薦的方式

var Role = {
  roleName:'TestingRoleName'
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM