GVKun编程网logo

node.js + express + socket.io无法将JavaScript文件加载到index.html(js文件无法调用)

14

对于node.js+express+socket.io无法将JavaScript文件加载到index.html感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍js文件无法调用,并为您提供关于Ex

对于node.js + express + socket.io无法将JavaScript文件加载到index.html感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍js文件无法调用,并为您提供关于Express框架或node.js如何自动提供javascript文件?、javascript – Express Node.js不起作用、javascript – ExpressJS – 带路由分离的Socket.IO、javascript – node.js / Express / Connect / Socket.io的关系的有用信息。

本文目录一览:

node.js + express + socket.io无法将JavaScript文件加载到index.html(js文件无法调用)

node.js + express + socket.io无法将JavaScript文件加载到index.html(js文件无法调用)

我正在开发应用程序,并且服务器当前已安装并且运行良好。

这是访问服务器时显示的index.html:

<!doctype html><html>  <head>    <title>Socket.IO chat</title>  </head>  <body>    <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>    <script type="text/javascript" src="./client.js"></script>    <script type="text/javascript" src="./main.js"></script>  </body></html>

但是,导入那些位于同一目录中的javascript文件时,出现404错误“无法加载资源:服务器响应状态为404(未找到)”。

这是我的服务器代码:

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''); // DO I NEED TO SEND THE OTHER FILES HERE ASWELL?});io.on(''connection'', function(socket){  console.log(''a user connected'');  socket.on(''disconnect'', function(){    console.log(''user disconnected'');  });  socket.on(''chat message'', function(msg){    console.log(''message: '' + msg);    io.emit(''chat message'', msg);  });});http.listen(3000, function(){  console.log(''listening on *:3000'');});

谢谢!

答案1

小编典典

如果HTML文件与脚本位于相同的路径,请使用相对路径,例如src = "main.js"。如果仍然不起作用,则可能是Express的错误。

将以下代码添加到您的app.js

app.use(express.static(__dirname + ''/scripts''));

并且可以从相对于/scripts- 的路径访问脚本, 例如
main.js从而http://yourdomain/script.js不是从http://yourdomain/scripts/main.js。对不起我的英语不好。

Express框架或node.js如何自动提供javascript文件?

Express框架或node.js如何自动提供javascript文件?

我将此行添加到我的index.jade文件中:

@H_301_6@

@H_301_6@

script(src="/socket.io/socket.io.js")

并且它以某种方式自动知道如何将Javascript文件提供给我的客户端.这是如何运作的?@H_301_6@

解决方法

Socket.io向服务器添加请求处理程序.看到:

@H_301_6@

https://github.com/learnboost/socket.io/blob/master/lib/manager.js#L90@H_301_6@

处理程序处理以/socket.io开头并处理它们的任何请求(例如,从安装模块的任何地方提供socket.io.js文件)@H_301_6@

javascript – Express Node.js不起作用

javascript – Express Node.js不起作用

我在我的ubuntu 12.04上安装了express 4以及node.js,npm和express-generator,并使用以下命令创建了一个app:
express test --hogan -c less
cd test && npm install
node app.js

现在我应该得到的是“快速服务器在端口3000上运行”,而是命令只是执行并且不会留下任何消息或错误.所以我不知道正在运行哪个端口快速或者它是否正在运行.那么有谁知道它出了什么问题?提前致谢.

解决方法

新的express生成器不会在自动生成的app.js文件中添加app.listen语句.这可能是一个错误?你能做的就是添加一个声明
app.listen(3000,function () {
console.log("express has started on port 3000");
});

这将指示express在端口3000上侦听并在控制台上打印出有用的消息.

javascript – ExpressJS – 带路由分离的Socket.IO

javascript – ExpressJS – 带路由分离的Socket.IO

我试图了解Expressjs和Socket.IO.我的路由在一个单独的文件中,我从app.js中包含:
var express = require('express'),db = require('./db'),mongoose = require('mongoose'),models = require('./models/device'),http = require('http'),path = require('path'),app = express(),server = http.createServer(app),io = require('socket.io').listen(server),routes = require('./routes/myRoutes');

但是,当我尝试从我的一个路由发出一个事件时,我没有引用socket.io.

exports.update = function(req,res){
    return Item.findById(req.params.id,function(err,item) {
       // Do some checks and save.
       socket.emit('updated');
    }
}

我理解为什么这可能不可用.相反,我不明白获取socket.io句柄的最佳方法是从app.js以外的其他文件.我在看this question(见里卡多的答案),但我还不清楚.理想情况下,我想避免这样做:

routes = requires(“routes / myRoutes”)(io);

解决方法

查看 express.io

它具有实时请求的路由,以及一系列其他有用的功能.

app = require('express.io')()
app.http().io()

app.io.route('example',function(req) {
    // do something interesting
}))

app.listen(7076)

至于绕过必须通过io对象.您有几个选项,根据您的要求,可能会也可能不会“最佳”.

>使io或app全球化. (有些人对全局变得惊慌失措)
>使用module.exports并要求另一个文件中的对象. (如果没有正确完成,可能会导致循环依赖问题)

传递io对象可能是最简单的方法,但你确实有选择.

javascript – node.js / Express / Connect / Socket.io的关系

javascript – node.js / Express / Connect / Socket.io的关系

我糊涂了.我的主要问题是,何时使用纯node.js,何时我应该使用像“express”或“connect”这样的框架/ MVC.

我知道“express”只是为“连接”添加了一堆功能,但它真正有用的是什么?可以说,我希望我的所有HTTP内容都针对“Apache”服务器,并且只对node.js做一些部分内容(如WebSocket连接,CouchDB等).

在这种情况下,出于某种原因使用“express”或“connect”是否有意义?

据我所知,Socket.IO还处理HTTP请求作为回退,所以它是否足以使用Socket.IO来满足这些需求?

使用Express / Connect还有什么大优势?

解决方法:

Express(或Connect)是HTTP Web应用程序的应用程序框架.这是您的应用程序的切入点.它提供了一些非常常见的功能,例如:

> HTTP服务器
> URL路由
>请求args
>会话

它还允许轻松使用其他功能(称为中间件),例如身份验证处理,模板化.

如果您只想通过SocketIO实现发布/订阅服务,而不使用任何页面或其他API,只需使用Socket.io库(S.io主页示例):

var io = require(''socket.io'').listen(80);

io.sockets.on(''connection'', function (socket) {
    socket.emit(''news'', { hello: ''world'' });
    socket.on(''my other event'', function (data) {
        console.log(data);
    });
});

如果你想在更复杂的应用程序,服务页面和API中使用Socket.io,你可以(必须)将它与Express集成(见How To Use)

总结

以上是小编为你收集整理的javascript – node.js / Express / Connect / Socket.io的关系全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

原文地址:https://codeday.me/bug/20190902/1789603.html

今天关于node.js + express + socket.io无法将JavaScript文件加载到index.htmljs文件无法调用的讲解已经结束,谢谢您的阅读,如果想了解更多关于Express框架或node.js如何自动提供javascript文件?、javascript – Express Node.js不起作用、javascript – ExpressJS – 带路由分离的Socket.IO、javascript – node.js / Express / Connect / Socket.io的关系的相关知识,请在本站搜索。

本文标签: