Node 未找到 html 中包含的 js 文件

2024-03-15

我正在尝试使用 node 和 socket.io 构建一个简单的聊天应用程序。我正在遵循此处列出的教程:http://socket.io/get-started/chat/ http://socket.io/get-started/chat/

我的问题是教程中有一些 javascript 直接放置在 html 中的脚本标记中。我想将此代码移动到它自己的 js 文件中。

我创建了一个名为 chat.js 的文件,该文件与我的 index.html 和 index.js 位于同一目录中。在我的 html 中,我将以下代码放在标题中(我也在结束正文标记之前尝试过)

  <script type="text/javascript" src="chat.js"></script>

但是,当我在终端中运行 node index.js 并转到 localhost 时,我得到了 chat.js 的 400。我尝试放置“/chat.js”和“./chat.js”,但没有成功。所有三个文件都位于同一目录中。

任何有关我做错了什么的线索将不胜感激。

我的index.js

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

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


io.on('connection', function(socket){
 socket.on('chat message', function(msg){
   io.emit('chat message', msg);
 });
});

http.listen(3000, function(){
 console.log('listening on *:3000');
});

Node.js 不会像其他 Web 服务器那样自动提供任何文件。如果你想让它发送chat.js当浏览器请求它时,您必须在 Node.js 代码中为其创建一个路由,以便 Web 服务器发送它。

如果您使用 Express 框架之类的东西,这可以通过一行代码来完成app.use(express.static(...)).

请注意,在您链接到的演示中,有一条特定的路线/小路。您需要一条类似的路线/chat.js或者你可以使用app.use(express.static(...))配置整个文件目录的自动服务。

将来,如果您显示实际的服务器代码,那么我们可以更具体地帮助您提供适合您的服务器的实际代码。


现在您已经显示了代码,您可以添加特定的路线/chat.js:

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

或者,如果您将 chat.js 移至public应用程序代码下的子目录,然后您可以使用以下命令自动提供该目录中的所有文件:

app.use(express.static('public'));

当 Express 收到对没有特定处理程序的路由的请求时,它将检查公共子目录以查看文件是否与请求名称匹配。如果是这样,它将自动提供该文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node 未找到 html 中包含的 js 文件 的相关文章

随机推荐