未解决的函数或方法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,我需要安装所有模块和库。
答案 0 :(得分:0)
您似乎没有使用此指定的jQuery文件的路由:
<script src='jquery-3.2.1.js'></script>
nodejs express服务器默认不为任何文件服务,所以除非您有静态文件的通用路由或该jQuery文件的特定文件,否则当浏览器请求时,您的快速服务器将不知道如何提供该文件它
您有几种可能的选择来解决这个问题:
更改网页脚本标记中的jQuery URL,使其指向jQuery的公共CDN之一。这样做往往具有性能优势。例如,您可以更改为:<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
。
使用服务器上的express.static()
配置静态资产的目录,该目录将在浏览器请求时由express自动提供。
为jQuery文件创建一个特定的路径,就像使用现有的app.get('/',...)that responds to the
/`GET请求一样。