Как получить доступ к серверным переменным с любого маршрута в NodeJS и Express - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу получить server объявленный в основном. js моего приложения (очень просто):

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)
})

Можно ли сделать module.exports основного. js?

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Надеюсь, что это ответ на ваш вопрос:

//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);
0 голосов
/ 18 апреля 2020

Вы можете создать еще один js файл в том же каталоге main. js и в этом файле:

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

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

module.exports = server;

В вашем основном. js файле включите этот js файл. Пока что скажите, что это имя файла test. js.

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

Чтобы включить это в файл маршрутов, просто выполните другой оператор require с соответствующим путем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...