以上就是给各位分享javascript–Windows上的Node.jsExpress.js:静态文件等待最多两分钟?,其中也会对nodejs静态文件服务器进行解释,同时本文还将给你拓展Express
以上就是给各位分享javascript – Windows上的Node.js Express.js:静态文件等待最多两分钟?,其中也会对nodejs静态文件服务器进行解释,同时本文还将给你拓展Express / Node.js:将自定义javascript渲染为响应、Express框架或node.js如何自动提供javascript文件?、javascript – Express Node.js不起作用、javascript – ExpressJS / NodeJS / Promises:从promise链中提前返回等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- javascript – Windows上的Node.js Express.js:静态文件等待最多两分钟?(nodejs静态文件服务器)
- Express / Node.js:将自定义javascript渲染为响应
- Express框架或node.js如何自动提供javascript文件?
- javascript – Express Node.js不起作用
- javascript – ExpressJS / NodeJS / Promises:从promise链中提前返回
javascript – Windows上的Node.js Express.js:静态文件等待最多两分钟?(nodejs静态文件服务器)
我在我的Windows环境中遇到Node.Js / Express.js的问题,静态JS文件可以在浏览器中标记为“待定”(禁用缓存)最多两分钟,之后它们似乎下载得很好.这通常在几次刷新后发生.
没有显示任何错误,所以我不确定如何进一步调查.相同的代码在Mac OSX环境中运行良好.
节点版本为v0.10.31,Express为4.8.5.
静态文件的代码是:
app.use(express.static(path.join(__dirname, ''public'')));
Chrome DevTools显示:
解决方法:
我有同样的问题.我的解决方案是将express-session的resave属性设置为false.
app.use(session({resave:false,…}));
我的配置:node v0.10.31,express v4.9.0,express-session v1.8.1
作为会话存储,我使用connect-mongo v0.4.1.
希望这对你有所帮助.
总结
以上是小编为你收集整理的javascript – Windows上的Node.js Express.js:静态文件等待最多两分钟?全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
原文地址:https://codeday.me/bug/20190703/1363430.html
Express / Node.js:将自定义javascript渲染为响应
app.use('/graph',function(req,res){ //send out graph data var var_name = req.session.var_name //fetch something from session var graphData = fetchGraphData(req.query.graph); //function that fetches graph data res.contentType("text/javascript"); res.render(__dirname + '/views/graph.jade',{ title: "Title",queryStr: JSON.stringify({var_name: var_name,graphData: graphData }) }); });
和玉文件:
| some_var_name = { | initGraph : function(divId){ | //some code here | var graphData = !{graphData} | // do something
作为一种解决方法,我已经使用|启动了jade文件的每一行,以便jade将文本解析为纯文本,并且不添加任何html标记!它工作正常,但是有更清洁的方法吗?解决方案可能会也可能不会使用Jade!
解决方法
您也可以尝试Mustache或Handlebars.
根据您的评论,我发现您希望继续使用res.render来呈现模板. consolodate.js增加了对Express的所有主要模板引擎的支持.包括@TheHippo提到的Underscore模板,Handlebars,Moustache和Dust.
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 / NodeJS / Promises:从promise链中提前返回
.post( function(req,res,next){ ...findUsersExistingGame... .then(function(game){ if(game){ return res.send(game); } else{ return ...findUserWaitingForOpponentsGame... } } .then(function(game){ if(game){ return res.send(game); } else{ return ...createNewGame... } }) .then(function(game){ return res.send(game); }) .catch(function(err){ return next(err); });
我最终会将每个函数重构为辅助函数以提高可读性,但我需要首先弄清楚链接.我的问题是,如果我在承诺链中找到一个游戏(即用户现有的游戏或其他等待对手的用户),那么我将返回res.send(游戏);但是,第三个.then将抛出一个错误,因为我之前的.then()语句返回undefined.如果我想做一个res.send(游戏),我如何早早退出承诺链?
选项1:我已经看到了抛出错误并明确捕获它的建议,但这种感觉从根本上说是错误的,使用错误来控制流量.
选项2:我可以做类似的事情而不是链接承诺,但这类似于“承诺/回调地狱”:
.post( function(req,next){ ...findUsersExistingGame... .then(function(game){ if(game){ return res.send(game); } else{ ...findUserWaitingForOpponentsGame... .then(function(game){ if(game){ return res.send(game); } else{ return ...createNewGame... .then(function(game){ return res.send(game); }); } }) } }
还有另一种方式(最好是在ES5中,因为我仍然试图从根本上理解承诺,但ES6的答案也是受欢迎的)?
解决方法
>游戏发现
>游戏尚未找到
>寻找游戏时出错
由于promises只是自然地分离错误而没有错误,只要你想以不同的方式处理这三个单独的返回中的每一个,你就会添加一些自己的分支逻辑.
要使用promise结果干净地进行分支需要额外的嵌套级别,并且通常没有理由避免它,因为它将使您的代码最容易遵循并理解其逻辑.
.post( function(req,next) { findUsersExistingGame(...).then(function(game) { if (game) return game; return findUserWaitingForOpponentsGame(...).then(function(game) { if (game) return game; // createNewGame() either resolves with a valid game or rejects with an error return createNewGame(...); }); }).then(function(game) { res.send(game); },function(err) { // send an error response here }); });
请注意这是如何简化每个阶段的返回,并返回下一个嵌套的承诺,使事物链,并集中处理将响应发送到一个地方以减少整体代码.
现在,您可以通过让每个函数接受之前的游戏值并让他们检查是否已经存在有效游戏来隐藏其中一些逻辑,则他们什么也不做:
.post( function(req,next) { findUsersExistingGame(args) .then(findUserWaitingForOpponentsGame) .then(createNewGame) .then(function(game) { res.send(game); },function(err) { // send an error response here }); });
但是,在findUserWaitingForOpponentsGame()中,你必须接受findUsersExistingGame()解析的确切参数,你必须检查游戏是否有效.
function findUserWaitingForOpponentsGame(args) { if (args.game) { return Promise.resolve(args); } else { return doAsyncFindUserWaitingForOpponentsGame(args); } }
每个函数都将使用args对象解析,该对象上有任何公共参数,并且具有每个级别可以检查的.game属性.虽然这为您提供了一个很好的清洁控制流,但它确实在每个函数中创建了额外的代码,它强制每个函数接受作为前一个函数输出的参数(因此您可以直接链接).你可以决定哪个更好.
关于javascript – Windows上的Node.js Express.js:静态文件等待最多两分钟?和nodejs静态文件服务器的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Express / Node.js:将自定义javascript渲染为响应、Express框架或node.js如何自动提供javascript文件?、javascript – Express Node.js不起作用、javascript – ExpressJS / NodeJS / Promises:从promise链中提前返回的相关信息,请在本站寻找。
本文标签: