Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript I';我试图使用module.exports和require将我的逻辑放在一个单独的文件中,但是,我可以';我好像没弄明白_Javascript_Node.js_Express - Fatal编程技术网

Javascript I';我试图使用module.exports和require将我的逻辑放在一个单独的文件中,但是,我可以';我好像没弄明白

Javascript I';我试图使用module.exports和require将我的逻辑放在一个单独的文件中,但是,我可以';我好像没弄明白,javascript,node.js,express,Javascript,Node.js,Express,最近我选择了Node.js+Express.js,以便将它们与Socket.io配对,并制作一个实时聊天应用程序。问题是,由于我对Node.js和Express.js相对缺乏经验,因此我在确定将逻辑放在何处以及如何在不同的文件中分离逻辑时遇到了一些困难。现在,创建Socket.io名称空间的逻辑在www文件中,我正试图找出放置它的位置。现在看起来是这样的: www文件: var app = require('../app'); var http = require('http'); var se

最近我选择了Node.js+Express.js,以便将它们与Socket.io配对,并制作一个实时聊天应用程序。问题是,由于我对Node.js和Express.js相对缺乏经验,因此我在确定将逻辑放在何处以及如何在不同的文件中分离逻辑时遇到了一些困难。现在,创建Socket.io名称空间的逻辑在
www
文件中,我正试图找出放置它的位置。现在看起来是这样的:

www
文件:

var app = require('../app');
var http = require('http');
var server = http.createServer(app);

let io = require('socket.io')(server);

servers.forEach((server) => {
    console.log(server.name)
    io.of(server.endpoint).on('connection',(socket) => {

        socket.on('messageToServer', (message) => {
            let roomName = Object.keys(socket.rooms)[1]
            let room = server.room.find((room) => {
                return room.name == roomName
            })
            room.history.push(message)

            io.of(server.endpoint).to(roomName).emit('messageToClient', message)
        })

        socket.on('joinRoom', (roomToJoin) => {

            let roomToLeave = Object.keys(socket.rooms)[1]

            socket.leave(roomToLeave)
            socket.join(roomToJoin)

            let room = server.room.find((room) => {
                return room.name == roomToJoin
            })

            socket.emit('chatHistory', room.history)
        })

    })
});
let server = require('../bin/www').server
let io = require('socket.io')(server);

function createSocketServers() {

    servers.forEach((server) => {
        console.log(server.name)
        io.of(server.endpoint).on('connection',(socket) => {

            socket.on('messageToServer', (message) => {
                let roomName = Object.keys(socket.rooms)[1]
                let room = server.room.find((room) => {
                    return room.name == roomName
                })
                room.history.push(message)

                io.of(server.endpoint).to(roomName).emit('messageToClient', message)
            })

            socket.on('joinRoom', (roomToJoin) => {

                let roomToLeave = Object.keys(socket.rooms)[1]

                socket.leave(roomToLeave)
                socket.join(roomToJoin)

                let room = server.room.find((room) => {
                    return room.name == roomToJoin
                })

                socket.emit('chatHistory', room.history)
            })

        })
    });
}

module.exports = createSocketServers
var app = require('../app');
var http = require('http');

var server = http.createServer(app);
module.exports = server
require('../utility/socket').createSocketServers
我尝试的是以下内容-我创建了一个
socket.js
文件,并将其放入名为
utility
的文件夹中,将代码从
www
移动到
socket.js
文件,并尝试将服务器从我的www文件导出到我的socket.js文件,以便socket.io可以访问它:

socket.js
文件:

var app = require('../app');
var http = require('http');
var server = http.createServer(app);

let io = require('socket.io')(server);

servers.forEach((server) => {
    console.log(server.name)
    io.of(server.endpoint).on('connection',(socket) => {

        socket.on('messageToServer', (message) => {
            let roomName = Object.keys(socket.rooms)[1]
            let room = server.room.find((room) => {
                return room.name == roomName
            })
            room.history.push(message)

            io.of(server.endpoint).to(roomName).emit('messageToClient', message)
        })

        socket.on('joinRoom', (roomToJoin) => {

            let roomToLeave = Object.keys(socket.rooms)[1]

            socket.leave(roomToLeave)
            socket.join(roomToJoin)

            let room = server.room.find((room) => {
                return room.name == roomToJoin
            })

            socket.emit('chatHistory', room.history)
        })

    })
});
let server = require('../bin/www').server
let io = require('socket.io')(server);

function createSocketServers() {

    servers.forEach((server) => {
        console.log(server.name)
        io.of(server.endpoint).on('connection',(socket) => {

            socket.on('messageToServer', (message) => {
                let roomName = Object.keys(socket.rooms)[1]
                let room = server.room.find((room) => {
                    return room.name == roomName
                })
                room.history.push(message)

                io.of(server.endpoint).to(roomName).emit('messageToClient', message)
            })

            socket.on('joinRoom', (roomToJoin) => {

                let roomToLeave = Object.keys(socket.rooms)[1]

                socket.leave(roomToLeave)
                socket.join(roomToJoin)

                let room = server.room.find((room) => {
                    return room.name == roomToJoin
                })

                socket.emit('chatHistory', room.history)
            })

        })
    });
}

module.exports = createSocketServers
var app = require('../app');
var http = require('http');

var server = http.createServer(app);
module.exports = server
require('../utility/socket').createSocketServers
www
文件:

var app = require('../app');
var http = require('http');
var server = http.createServer(app);

let io = require('socket.io')(server);

servers.forEach((server) => {
    console.log(server.name)
    io.of(server.endpoint).on('connection',(socket) => {

        socket.on('messageToServer', (message) => {
            let roomName = Object.keys(socket.rooms)[1]
            let room = server.room.find((room) => {
                return room.name == roomName
            })
            room.history.push(message)

            io.of(server.endpoint).to(roomName).emit('messageToClient', message)
        })

        socket.on('joinRoom', (roomToJoin) => {

            let roomToLeave = Object.keys(socket.rooms)[1]

            socket.leave(roomToLeave)
            socket.join(roomToJoin)

            let room = server.room.find((room) => {
                return room.name == roomToJoin
            })

            socket.emit('chatHistory', room.history)
        })

    })
});
let server = require('../bin/www').server
let io = require('socket.io')(server);

function createSocketServers() {

    servers.forEach((server) => {
        console.log(server.name)
        io.of(server.endpoint).on('connection',(socket) => {

            socket.on('messageToServer', (message) => {
                let roomName = Object.keys(socket.rooms)[1]
                let room = server.room.find((room) => {
                    return room.name == roomName
                })
                room.history.push(message)

                io.of(server.endpoint).to(roomName).emit('messageToClient', message)
            })

            socket.on('joinRoom', (roomToJoin) => {

                let roomToLeave = Object.keys(socket.rooms)[1]

                socket.leave(roomToLeave)
                socket.join(roomToJoin)

                let room = server.room.find((room) => {
                    return room.name == roomToJoin
                })

                socket.emit('chatHistory', room.history)
            })

        })
    });
}

module.exports = createSocketServers
var app = require('../app');
var http = require('http');

var server = http.createServer(app);
module.exports = server
require('../utility/socket').createSocketServers

一旦我这样做了,我的代码就停止工作了,所以我只能假设我没有正确地完成它,因此我在这里寻求帮助。谢谢

除了这条线以外,一切看起来都很好

require('../utility/socket').createSocketServers
当您在
socket.js
文件中执行此操作时,
module.exports=createSocketServers
,实际上是导出构造函数

如果你运行你所需要的,它应该工作

require('../utility/socket')()

如果你想保持现在的状态,你必须从
socket.js
文件中导出一个对象

module.exports={createSocketServers}

在像上面那样导出模块之后,您必须像下面那样运行它


require('../utility/socket').createSocketServers()

您在终端中看到的错误是什么?谢谢,看起来这确实是问题所在。