gpt4 book ai didi

javascript - 如何导出需要其他模块的模块

转载 作者:行者123 更新时间:2023-12-02 21:01:40 25 4
gpt4 key购买 nike

我正在开发一个越来越大的 Node js 项目,我正在尝试整理我的代码。这只是一个案例。

这是我的index.js:

const express = require('express')
const app = express()
const http = require('http').Server(app);
const io = require('socket.io')(http)

io.on('connection', socket => {
socket.on('message', () => doSomething())
})

http.listen(4000, () => console.log('server started'))

我想从另一个文件(比如functions.js)导入doSomething,如下所示:

function doSomething(){
console.log(io.sockets.adapter.rooms);
}

module.exports = { doSomething }

修改index.js如下:

[...]
const library = require('./functions.js')
[...]
socket.on('message', () => library.doSomething())

但是当然:Functions.js 中未定义 io。

问题:如何导入所需的模块以便它们在两个文件中共享?

最佳答案

编写您的 function.js 文件,如下所示:

function doSomething(){
let self = this;
console.log(self.io.sockets.adapter.rooms);
}

module.exports = function (io) {
let self = this;
self.io = io;
return {
doSomething: doSomething.bind(self)
};
};

它在 index.js 文件中的用法是:

const Library = require('./functions.js');
const library = Library(io);

socket.on('message', () => library.doSomething())

关于javascript - 如何导出需要其他模块的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61328684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com