如何从NodeJS和Express中的任何路由访问服务器变量

时间:2020-04-17 23:03:06

标签: node.js express socket.io

我想在我的应用程序的main.js中声明server(非常简单):

const server = app.listen(3000, () => {
    console.log("Server running")
})

并在另一个路由文件中使用它。这是针对SocketIO的,因此我可以执行以下操作:

const SocketIO = require("socket.io")
const io = SocketIO.listen(server)

io.on("connection", (socket) => {
    console.log("new connection at: ", socket.id)
})

是否可以对main.js做module.exports

2 个答案:

答案 0 :(得分:0)

您可以在main.js的同一目录和此文件中创建另一个js文件:

const express = require('express');
const app = express();

const server = app.listen(3000, () => {
  console.log("Server running")
})

module.exports = server;

在您的main.js文件中包括该js文件。现在,假设此文件名为test.js。

const server = require('./test');

要将其包含在路由文件中,只需执行另一条带有适当路径的require语句即可。

答案 1 :(得分:0)

希望这能回答您的问题:

//Dependencies
const express = require('express');

//PORT
const port = process.env.PORT || 3005;

//Initialize the App
const app = express();

//Start the app with socket io;
const io = require('socket.io')(app.listen(port, () => {
    appLog.info(`Server is listening on port ${port}`);
}));

//Export the module here
module.exports = { io };


//Make sure to load the routes that will be using socket io
//after the exports, so that the socket io is properly exported
//before it's being used in the routes

//Load Routes
const exampleRoute= require('./routes/exampleRoute');

//Use Routes
app.use('/', exampleRoute);