对于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文件无法调用)
- 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文件无法调用)
我正在开发应用程序,并且服务器当前已安装并且运行良好。
这是访问服务器时显示的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文件?
@H_301_6@
@H_301_6@
script(src="/socket.io/socket.io.js")
并且它以某种方式自动知道如何将Javascript文件提供给我的客户端.这是如何运作的?@H_301_6@
解决方法
@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不起作用
express test --hogan -c less cd test && npm install node app.js
现在我应该得到的是“快速服务器在端口3000上运行”,而是命令只是执行并且不会留下任何消息或错误.所以我不知道正在运行哪个端口快速或者它是否正在运行.那么有谁知道它出了什么问题?提前致谢.
解决方法
app.listen(3000,function () { console.log("express has started on port 3000"); });
这将指示express在端口3000上侦听并在控制台上打印出有用的消息.
javascript – ExpressJS – 带路由分离的Socket.IO
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);
解决方法
它具有实时请求的路由,以及一系列其他有用的功能.
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的关系
我糊涂了.我的主要问题是,何时使用纯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.html和js文件无法调用的讲解已经结束,谢谢您的阅读,如果想了解更多关于Express框架或node.js如何自动提供javascript文件?、javascript – Express Node.js不起作用、javascript – ExpressJS – 带路由分离的Socket.IO、javascript – node.js / Express / Connect / Socket.io的关系的相关知识,请在本站搜索。
本文标签: