get()方法或函数

时间:2017-06-23 21:43:36

标签: javascript node.js intellij-idea socket.io

  

未解决的函数或方法get()。

我是js和node的新手,我在尝试使用套接字进行聊天时遇到了困难。这是代码:

的.js

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);

server.listen(8888);

app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket) {
    socket.on('send message', function (data) {
        io.sockets.emit('new message', data);
    });
});

html的

<!DOCTYPE html>
<html lang="en"> 
<head>
    <meta charset="UTF-8">
    <title>glupi chat</title>
    <style>
        #chat{
            height: 500px;
        }
    </style>
</head>
<body>
    <div id="chat"></div>
    <form id="send-message">
        <input size="35" id="message">
        <input type="submit">
    </form>

<script src='jquery-3.2.1.js'></script>
<script src="/socket.io/socket.io.js"></script>
<script>
    $document.ready(function () {
        var socket = io.connect();
        var $messageForm = $('#send-message');
        var $messageBox = $('#message');
        var $chat = $('#chat');

        $messageForm.submit(function (e) {
            e.preventDefault();
            socket.emit('send message', $messageBox.val());
            $messageBox.val('');
        });

        socket.on('new message', function (data) {
           $chat.append(data + "<br/>");
        });

    });
</script>
</body> 
</html>  

我使用IntelliJ IDEA,我需要安装所有模块和库。

1 个答案:

答案 0 :(得分:0)

您似乎没有使用此指定的jQuery文件的路由:

 <script src='jquery-3.2.1.js'></script>

nodejs express服务器默认不为任何文件服务,所以除非您有静态文件的通用路由或该jQuery文件的特定文件,否则当浏览器请求时,您的快速服务器将不知道如何提供该文件它

您有几种可能的选择来解决这个问题:

  1. 更改网页脚本标记中的jQuery URL,使其指向jQuery的公共CDN之一。这样做往往具有性能优势。例如,您可以更改为:<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

  2. 使用服务器上的express.static()配置静态资产的目录,该目录将在浏览器请求时由express自动提供。

  3. 为jQuery文件创建一个特定的路径,就像使用现有的app.get('/',...)that responds to the /`GET请求一样。