无法在对象中创建服务器node.js

问题描述:

我试图将我的服务器与其变量放在对象中以保持我的项目清洁,所以我创建了core.js文件,该文件包含所有服务器变量,看起来像这样:无法在对象中创建服务器node.js

module.exports = 
{ 
    express: require('express'), 
    http: require("http"), 
    app: this.express(), 
    server: this.http.createServer(this.app), 
    io: require('socket.io').listen(this.server), 

    runServer: function() 
    { 
     ........... 
    } 
}; 

我需要我的主要文件,在这个文件中:

var core = require("./server/classes/core"); 

当我尝试运行我得到这个错误:

app: this.express(), 

     ^

TypeError: this.express is not a function 

可能是什么问题?

当你在你的代码中初始化如上所述的json时,它们都在同一时间执行,而不是一个接一个执行,因为它们都属于单行执行。

因此,下面的所有行将在同一时间执行,而不是一个一个执行。

{ 
    express: require('express'), 
    http: require("http"), 
    app: this.express(), 
    server: this.http.createServer(this.app), 
    io: require('socket.io').listen(this.server), 

    runServer: function() 
    { 
     ........... 
    } 
}; 

因此,在该行app: this.express()的执行时间,this.express将是不确定的。

更好的是,你可以在一个函数中定义它们,并按如下所示分配给module.exports

function Core() { 
    this.express = require('express'); 
    this.http = require("http"); 
    this.app = this.express(); 
    this.server = this.http.createServer(this.app); 
    this.io = require('socket.io').listen(this.server); 

    ..... 
} 

module.exports = new Core(); 

另一种替代方法是将它们直接分配给exports,如下所示。

var express = require('express'); 
var http = require("http"); 
var app = express(); 
var server = http.createServer(app); 
var io = require('socket.io').listen(server); 

exports.express = express; 
exports.http = http; 
exports.app = app; 
exports.server = server; 
exports.io = io; 
+0

一切工作都在两种方式,但我更喜欢第一个。不知道一切都在同一时间定义在对象... – Donatas

+0

@Donatas,伟大的伴侣,只要upvote它,如果你喜欢它:-) – Aruna