Javascript 如何从类中访问变量?

Javascript 如何从类中访问变量?,javascript,node.js,class,variables,Javascript,Node.js,Class,Variables,我有一个名为client的变量,它在类的函数中定义。我只想把它从那个类中导出,这样我就可以在我的控制器中使用它了。 这是我的密码 const path = require('path'); const bodyParser = require('body-parser'); const mongoose = require('mongoose'); const flash = require('connect-flash'); var methodOverride = require('meth

我有一个名为
client
的变量,它在类的函数中定义。我只想把它从那个类中导出,这样我就可以在我的控制器中使用它了。 这是我的密码

const path = require('path');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const flash = require('connect-flash');
var methodOverride = require('method-override');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const http = require('http');
const socketio = require('socket.io');
const passport = require('passport');
const rememberLogin = require('./http/middlewares/rememberLogin');
const Helpers = require('./helpers');
const app = express();

module.exports = class Application{
    constructor() {
        this.setExpress();
        this.setupMongo();
        this.setConfig();
        this.setRoutes();
        // this.updateDataBase();
    }

    setExpress() {    
        const server = http.createServer(app);
        const PORT = process.env.PORT || 3000;
        server.listen(PORT, () => console.log(`Server running on port ${PORT}`));
        let client = socketio(server);    
    }

    setupMongo() {
        mongoose.connect(config.database.url, {
            useUnifiedTopology: true,
            useCreateIndex: true,
            useNewUrlParser: true,
            useFindAndModify: false
        }).then(() => console.log('Connected to mongo....'));        
    }

    setConfig() {
        require('./passport/passport-local');

        // Set ejs config
        app.set('view engine', 'ejs');
        app.set('views', path.join(__dirname, '../resource/views'));
        app.use(config.layout.ejs.expressLayouts);
        app.set("layout extractScripts", config.layout.ejs.extractScripts);
        app.set("layout extractStyles", config.layout.ejs.extractStyles);
        app.set("layout" , config.layout.ejs.master);

        app.use(express.static(path.join(__dirname, '../public')));
        app.use(bodyParser.json());
        app.use(methodOverride('_method'));
        app.use(bodyParser.urlencoded({ extended : true }));
        app.use(session({...config.session}));
        app.use(cookieParser('Thisismycookiesecretekey'));
        app.use(flash());
        app.use(passport.initialize());
        app.use(passport.session());
        app.use(rememberLogin.handle);
        app.use((req, res, next) => {
            app.locals = new Helpers(req, res).getObjects();
            next();
        })
    }

    setRoutes() {
        app.use(require('./routes/index'));
    }
}

module.exports.client = client;
我只是把setupExpress函数从类中去掉,然后我就可以访问
客户端
变量。 但是我认为这不是正确的方法。
有什么方法可以让我以不同的方式导出它吗

您可以使用从任何地方都可以访问的静态变量。您可以在构造函数中将client声明为this.client=null,并在
setupExpress
函数中使用值进行设置,因此现在当您实例化该类时,您将获得客户端变量。只需在
setExpress
函数中用
this.client
替换
let client
。@Sascha我使用了您的解决方案,但我得到另一个错误,它说:
this.setExpress不是函数
@KunalKukreja谢谢您的回答,我将其替换,但当我记录
this.client
变量,我没有定义。你是指
this.client=socketio(服务器)
istead of
let client=socketio(服务器)