Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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
Javascript 在ES6类中的函数之间共享变量_Javascript_Node.js_Express_Ecmascript 6 - Fatal编程技术网

Javascript 在ES6类中的函数之间共享变量

Javascript 在ES6类中的函数之间共享变量,javascript,node.js,express,ecmascript-6,Javascript,Node.js,Express,Ecmascript 6,我正在Node.js中涉猎ES6语法。作为一个起点,我只是尝试创建一个简单的类来配置并返回一个Express服务器——但不确定这在生产环境中是好是坏 我在访问其他函数中的类成员变量时遇到问题。请看下面的代码: import express from 'express' import http from 'http' const _server = null const _app = null class HttpServer { constructor (port) {

我正在Node.js中涉猎ES6语法。作为一个起点,我只是尝试创建一个简单的类来配置并返回一个Express服务器——但不确定这在生产环境中是好是坏

我在访问其他函数中的类成员变量时遇到问题。请看下面的代码:

import express from 'express'
import http from 'http'

const _server = null
const _app = null

class HttpServer {

    constructor (port) {
        this._port = port;

        if (this._app === null) {
            this._app = express()
        }

        if (this._server === null) {
            this._server = http.createServer(this._app)
        }

        return this._server
    }

    start (callback) {

        this._server.listen(this._port, (error) => {
            return callback(error)
        })
    }

}

export default HttpServer
虽然调用
start
方法时,我得到一个错误,变量
this.\u server
未定义的
。我认为
this
关键字可以访问变量。我尝试将
访问方法替换为使用
HttpServer.\u server
但没有成功。任何提示或建议将不胜感激

如果我犯了愚蠢的错误,请原谅我,在此之前我还没有上过ES6列车

  • 有必要删除对null的检查

  • 不需要从构造函数返回任何内容



  • 这是因为您正在检查此应用程序是否为
    null
    -这将失败,因为它不是null,是
    未定义的,就像
    此服务器一样。您从不创建
    express
    的实例。此外,您不需要在构造函数中进行这些检查,只需创建
    this.\u app=express()
    this.\u server=http.createServer(this.\u app)啊,好吧,这是有道理的。我如何将它们都设置为
    null
    ,就像我尝试使用
    常量全局变量那样?在构造函数中,您可以使用
    将它们初始化为
    null
    。\u app=null
    。我删除了空检查&在
    start
    I记录的
    typeof
    端口、应用程序和服务器中。我得到
    未定义
    函数
    对象
    。端口不再设置。这是我愚蠢的错误,我一直在处理单例类,所以这只是习惯。我删除了所有的空检查。我仍然收到一个未定义的错误。\但是在start函数中有一个端口。@nickcorin,你创建了一个服务器实例,比如:
    newhttpserver(3000)
    ?愚蠢的我。我试图使用这样的代码:
    const-server=new-HttpServer();服务器启动(8000)谢谢你的帮助。这太完美了。
    
    class HttpServer {
    
        constructor (port) {
            this._port = port
            this._app = express()
            this._server = http.createServer(this._app)
        }
    
        start (callback) {
            this._server.listen(this._port, (error) => {
                return callback(error)
            })
        }
    
    }