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 oflet client=socketio(服务器)代码>?