首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获取/chatroom

无法获取/chatroom
EN

Stack Overflow用户
提问于 2020-02-24 08:36:58
回答 1查看 79关注 0票数 0

我是新来的。我正在尝试开发一个web应用程序,但我遇到了一个障碍,我已经坚持了一段时间。

当运行我的app.js文件时,除了聊天室之外,所有的页面都会显示出来。有没有人可以看一下代码,帮我一下?

我还没有包括我的代码注册和登录等,因为他们工作得很好。当在聊天室中使用他们的router.get和.post概念时,我只收到一条"Cannot GET /chatroom“消息。

Chatroom.js:

代码语言:javascript
复制
const express = require('express');
const router = express.Router();
const socketClient = require('socket.io').listen(4000).sockets;


//Chatroom page: Credit - Traversy Media - https://www.youtube.com/watch?v=hrRue5Rt6Is&t=1542s
router.get('/chatroom', (req, res) => res.render('chatroom.ejs'));

router.post('/chatroom', (req, res) => {

// Connect to Socket.io
socketClient.on('connection', function (socket) {
    let chat = db.collection('UsersDB/chats');

    // Create function to send status
    sendStatus = function (s) {
        useUnifiedTopology: true,
        socket.emit('status', s);
    }

    // Get chats from mongo collection
    chat.find().limit(100).sort({ _id: 1 }).toArray(function (err, res) {
        if (err) {
            throw err;
        }

        // Emit the messages
        socket.emit('output', res);
    });

    // Handle input events
    socket.on('input', function (data) {
        let name = data.name;
        let message = data.message;

        // Check for name and message
        if (name == '' || message == '') {
            // Send error status
            sendStatus('Please enter a name and message');
        } else {
            // Insert message
            chat.insert({ name: name, message: message }, function () {
                socketClient.emit('output', [data]);

                // Send status object
                sendStatus({
                    message: 'Message sent',
                    clear: true
                });
            });
        }
    });

    // Handle clear
    socket.on('clear', function (data) {
        // Remove all chats from collection
        chat.remove({}, function () {
            // Emit cleared
            socket.emit('cleared');
            });
        });
    });

});

app.js:

代码语言:javascript
复制
const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const mongoose = require('mongoose');
const passport = require('passport');
const flash = require('connect-flash');
const session = require('express-session');


const app = express();

// Passport Config
require('./config/passport')(passport);

// DB Config
const db = require('./config/keys').mongoURI;

// Connect to MongoDB
mongoose
  .connect(
    db,
    { useNewUrlParser: true }
  )
  .then(() => console.log('MongoDB Connected'))
  .catch(err => console.log(err));

// EJS
app.use(expressLayouts);
app.set('view engine', 'ejs');

// Express body parser
app.use(express.urlencoded({ extended: true }));

// Express session
app.use(
  session({
    secret: 'secret',
    resave: true,
    saveUninitialized: true
  })
);

// Passport middleware
app.use(passport.initialize());
app.use(passport.session());

// Connect flash
app.use(flash());

// Global variables
app.use(function(req, res, next) {
  res.locals.success_msg = req.flash('success_msg');
  res.locals.error_msg = req.flash('error_msg');
  res.locals.error = req.flash('error');
  next();
});

// Routes
app.use('/', require('./routes/index.js'));
app.use('/users', require('./routes/users.js'));
app.use('/chatroom', require('./routes/chatroom.js'));

const PORT = process.env.PORT || 5000;

app.listen(PORT, console.log(`Server started on port ${PORT}`));

EN

回答 1

Stack Overflow用户

发布于 2020-02-27 21:04:14

首先,我要感谢Cranky Coder、Prakher Londe和Sunil Lulla的回复。

我最终想出了如何让聊天室出现的方法。正如我之前提到的其他页面(登录和注册等)都表现得很好。与聊天室不同的是,我将这些的后端放在一个users.js文件中。所以我决定把我的chatroom.js代码移到我的users.js中,然后在app.js(我运行的文件)中用app.use('/users',require('.routes/users.js'))调用它。

然后我将我的router.get代码更改为:

代码语言:javascript
复制
router.get('/chatroom', (req, res) => res.render('chatroom', {
  user: req.user
}));

然后在我的聊天室中(上下文参见OP ),我添加了一个res.redirect('/users/chatroom');,最后一个括号结束。最后,我当然编辑了我的.ejs文件,使其具有

我发现这样做更好,因为除非登录,否则无法访问聊天室。

再次感谢你的回复,虽然这是一个具体的问题,但我真的希望这对未来的人有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60368255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档