我對後端代碼非常陌生。現在我試着學習nodeJS-server的體系結構。模塊中的NodeJS必需模塊始終未定義
我現在的問題是非常簡單的,我相信,但我無法通過-.-
server.js運行(主):
var io = require("socket.io"),
express = require("express"),
expressHbs = require('express3-handlebars'),
Player = require("./models/Player").Player,
Room = require("./models/Room").Room,
Game = require("./models/Game").Game,
dataSet = require('./data/data.json');
//...
然後,我有3個模塊:
- 球員
- 房
- 遊戲
每個模塊具有相同的結構:
Player.js
// importing another module
var Room = require("./Room").Room;
if (!Player.players) {
Player.players = {};
}
function Player(foo) {
this.foo = foo;
Player.players[foo] = this;
}
Player.getAllPlayersAsObject = function() {
return Player.players;
};
// ...
Player.prototype.removePlayer = function() {
if (Player.players.hasOwnProperty(this.id)) {
delete Player.players[this.id];
}
};
// ...
/**
* node export
* @type {Player}
*/
exports.Player = Player;
Room.js
var Player = require("./Player").Player;
if (!Room.rooms) {
Room.rooms = {};
}
function Room(foo) {
this.foo = foo
}
Room.getAllRoomsAsObject = function() {
return Room.rooms;
};
Room.prototype.toString = function() {
return JSON.stringify(this);
};
/**
* node export
* @type {Room}
*/
exports.Room = Room;
我的主要問題是,我可以使用來自server.js的Room,Player,Game - 構造函數,原型和a通常還有其他功能。
在Player.js中,我也可以正常使用導入的Room模塊!
Room.js告訴我:
path/path/path/gameserver/models/Room.js:222
var currentPlayer = Player.getPlayer(this.players[player].id);
^
TypeError: Cannot read property 'getPlayer' of undefined
我要瘋了。我究竟做錯了什麼?當我在該文件的頂部對該變量「Player」進行console.log(調試)時,我總是處於未定義狀態。
我走過谷歌和在這裏在stackoverflow,沒有找到我的問題的任何解決方案。
THX和問候,
邁克爾
這是因爲你有一個[圓形'需要()'](https://nodejs.org/api/modules.html#modules_cycles)。 –