NodeBeginner
NodeBeginner

Reputation: 30

Get new object from another class nodejs

Ok so I have a class that contains

Object JS

var GameServer = require("./GameServer");
var gameServer = new GameServer();

GameServer() contains

GameServer JS

function GameServer() {
    // Startup
    this.run = true;
    this.lastNodeId = 1;
    this.lastPlayerId = 1;
    this.clients = [];
    this.largestClient; // Required for spectators
    this.nodes = [];
    this.nodesVirus = []; // Virus nodes
    this.nodesEjected = []; // Ejected mass nodes
    this.nodesPlayer = []; // Nodes controlled by players
}

Now, what im trying to acheive is getting gameServer from ObjectClass

In my class i've tried

new JS

var ObjectClass = require("./ObjectClass");
var gameServer = ObjectClass.gameServer;

But from this way, I won't be able to grab the class GameServer() properties. I'm new to node and im sorry I have to ask this question. I'm currently stuck right now

When I try to grab clients from GameServer

var ObjectClass = require("./ObjectClass");
var gameServer = ObjectClass.gameServer;
gameServer.clients.length;

I get error, clients is undefined. Any way around this?.

I cannot modify GameServer nor Object js.. Basicly im making a script attacthed to a script for extra functionalities.

Upvotes: 0

Views: 3350

Answers (1)

rahpuser
rahpuser

Reputation: 1249

You are missing the exports of your files so when doing require(file) you're getting and empty object {}..

For gameServer you should be doing something like:

'use strict';
function GameServer() {
    // Startup
    this.run = true;
    this.lastNodeId = 1;
    this.lastPlayerId = 1;
    this.clients = [];
    this.largestClient; // Required for spectators
    this.nodes = [];
    this.nodesVirus = []; // Virus nodes
    this.nodesEjected = []; // Ejected mass nodes
    this.nodesPlayer = []; // Nodes controlled by players
}

module.exports =  exports = GameServer;

ObjectClass

'use strict';
var GameServer = require("./GameServer");
var gameServer = new GameServer();
exports.gameServer = gameServer;

You need to understand that require cache the value returned by the file, so you would be using a singleton of gameServer.

Upvotes: 2

Related Questions