文件不存在';当javascript移动到外部文件时无法工作

文件不存在';当javascript移动到外部文件时无法工作,javascript,html,Javascript,Html,我正在试用socket.io并下载了它的GitHub 它工作得很好,但当我尝试将内联js代码移动到外部文件时,它停止了工作。为什么会这样?我做错了什么 在其index.html文件中,它有: <script src="/socket.io/socket.io.js"></script> <script src="https://code.jquery.com/jquery-1.11.1.js"></script> <script>

我正在试用socket.io并下载了它的GitHub

它工作得很好,但当我尝试将内联js代码移动到外部文件时,它停止了工作。为什么会这样?我做错了什么

在其index.html文件中,它有:

<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
  $(function () {
    var socket = io();
    $('form').submit(function(e){
      e.preventDefault(); // prevents page reloading
      socket.emit('chat message', $('#m').val());
      $('#m').val('');
      return false;
    });
  });
</script>

根据讨论,您必须将以下内容添加到index.js中,以便在Express中提供静态文件

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

app.use(require('express').static(__dirname)); // Add this to serve static files
否则,它将无法找到chat.js的位置,从而导致404错误


您可以阅读更多信息。

您确定在控制台中的任何错误中提供了正确的路径吗?您正在函数的局部范围内定义
套接字
变量。尝试将套接字移出外部文件中的函数。@FabZbi,这有什么关系?当OP将其移动到外部脚本中时,为什么会产生影响?@epascarello you's right没有任何意义。。但是为什么在html中从本地路径获取
socket.js
,在外部示例中从CDN获取?也许有问题?
$(function () {
    var socket = io();
    $('form').submit(function(e){
      e.preventDefault(); // prevents page reloading
      socket.emit('chat message', $('#m').val());
      $('#m').val('');
      return false;
    });
  });
var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);

app.use(require('express').static(__dirname)); // Add this to serve static files