Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从另一个类nodejs获取新对象_Node.js - Fatal编程技术网

Node.js 从另一个类nodejs获取新对象

Node.js 从另一个类nodejs获取新对象,node.js,Node.js,好的,我有一个包含 对象JS var GameServer = require("./GameServer"); var gameServer = new GameServer(); function GameServer() { // Startup this.run = true; this.lastNodeId = 1; this.lastPlayerId = 1; this.clients = []; this.largestClient

好的,我有一个包含

对象JS

var GameServer = require("./GameServer");
var gameServer = new GameServer();
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
}
var ObjectClass = require("./ObjectClass");
var gameServer = ObjectClass.gameServer;
GameServer()包含

GameServer JS

var GameServer = require("./GameServer");
var gameServer = new GameServer();
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
}
var ObjectClass = require("./ObjectClass");
var gameServer = ObjectClass.gameServer;
现在,我想实现的是从ObjectClass获取gameServer

'use strict';
var GameServer = require("./GameServer");
var gameServer = new GameServer();
exports.gameServer = gameServer;
在我的课堂上,我试过

新JS

var GameServer = require("./GameServer");
var gameServer = new GameServer();
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
}
var ObjectClass = require("./ObjectClass");
var gameServer = ObjectClass.gameServer;
但是,通过这种方式,我将无法获取GameServer()类的属性。我是node的新手,很抱歉我不得不问这个问题。我现在陷入困境

当我试图从GameServer抓取客户端时

var ObjectClass = require("./ObjectClass");
var gameServer = ObjectClass.gameServer;
gameServer.clients.length;
我得到错误,客户端未定义。有什么办法吗


我无法修改GameServer或对象js。。基本上,我正在制作一个附加到脚本的脚本以获得额外功能。

您缺少文件的导出,因此在执行需要(文件)的操作时,需要获取空对象{}

对于gameServer,您应该执行以下操作:

'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;
对象类

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

您需要了解require缓存文件返回的值,因此您将使用gameServer的单例。

您缺少文件的导出,因此在执行require(file)时,您将获得一个空对象{}

对于gameServer,您应该执行以下操作:

'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;
对象类

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


您需要了解需要缓存文件返回的值,因此您将使用gameServer的单例。

需要更多代码。特别是
otherclass
是什么,可能是如何创建的。导出中是否有类?如果需要创建对象,可能可以使用factory模式,otherwide可以为每个文件导出一个新对象,因为需要js缓存文件的输出。不,对象类不包含导出。它只有一个创建GameServer新功能的变量。我正在尝试获取该变量,因为Object js在新的GameServer中存储自己的值。我正在尝试获取该变量及其GameServerWell的值,看起来导出是空的,因此当您执行
require('./GameServer')
时,您将获得一个空对象,您应该将GameServer函数添加到导出中,与ObjectClassRequired更多代码相同。特别是
otherclass
是什么,可能是如何创建的。导出中是否有类?如果需要创建对象,可能可以使用factory模式,otherwide可以为每个文件导出一个新对象,因为需要js缓存文件的输出。不,对象类不包含导出。它只有一个创建GameServer新功能的变量。我正在尝试获取该变量,因为Object js在新的GameServer中存储自己的值。我正在尝试获取该变量及其GameServerWell的值,看起来导出是空的,因此当您执行
require('./GameServer')
时,您将获得一个空对象,您应该将GameServer函数添加到导出中,与ObjectClassmodule相同。exports=exports=GameServer??我很高兴它对你有用。为了澄清,我做了
module.exports=exports=gameServer
,只是为了确保exports变量指向module.exports所在的同一个对象,因为我们覆盖了exports的引用,所以exports指向不同的对象。最后,您可以使用module.exports,但忘记了exports。有没有一种方法可以在不向对象类添加导出的情况下执行此操作?我的主要目标不是修改其他类。我不确定你所说的其他类是什么意思。NodeJ有一个简单的模块加载器,因此要访问开发者使用的每个模块节点,需要(其他一些人决定使用另一个模块加载器),在这种情况下,当你“需要”一个js文件时,节点将一个模块对象放在该文件中,包含很多信息,我们这里的重要属性是导出,因此当你需要一个文件时,将返回exports属性。因此,不,没有办法要求文件使用exports属性返回一个不带out的值。module.exports=exports=GameServer??我很高兴它对你有用。为了澄清,我做了
module.exports=exports=gameServer
,只是为了确保exports变量指向module.exports所在的同一个对象,因为我们覆盖了exports的引用,所以exports指向不同的对象。最后,您可以使用module.exports,但忘记了exports。有没有一种方法可以在不向对象类添加导出的情况下执行此操作?我的主要目标不是修改其他类。我不确定你所说的其他类是什么意思。NodeJ有一个简单的模块加载器,因此要访问开发者使用的每个模块节点,需要(其他一些人决定使用另一个模块加载器),在这种情况下,当你“需要”一个js文件时,节点将一个模块对象放在该文件中,包含很多信息,我们这里的重要属性是导出,因此当你需要一个文件时,将返回exports属性。因此,没有任何方法可以要求文件在不使用exports属性的情况下返回值。