Я очень много нового для бэкэнд-кода. На данный момент я пытаюсь изучить архитектуру nodeJS-сервера.Требуемый модуль 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;
Моя главная проблема в том, что я может использовать Room, Player, Game from server.js - конструктор, прототип и других функций.
В Player.js я тоже могу использовать импортированный Комнатный модуль!
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
Я схожу с ума. Что я делаю не так? Когда я делаю console.log (debug) этой переменной «Player» в верхней части файла, я всегда становлюсь неопределенным.
Я гулял по Google и здесь, в stackoverflow, не найдя решения для моей проблемы.
Thx и наилучшие пожелания,
Майкла
Это потому, что у вас есть [круговую 'требуют()'] (https://nodejs.org/api/modules.html#modules_cycles). –