Questions tagged «express»

Express是一个灵活的Node.js Web应用程序框架,为构建Web应用程序提供了一组强大的功能。

16
Node.js / Express.js应用仅在端口3000上运行
我在服务器上运行了一个Node.js / Express.js应用程序,该应用程序仅在端口3000上运行,我试图找出原因。这是我发现的: 如果不指定端口(app.listen()),则该应用会运行,但不会加载网页。 在端口3001(app.listen(3001))或任何其他未使用的端口上,应用程序运行,但网页未加载。 在端口2999上,该应用程序引发错误,因为其他人正在使用该端口。 在端口3000上,该应用程序运行,并且网页加载正常。 我知道Express应用程序默认使用端口3000。但是奇怪的是,我的应用程序仅在我明确使它运行在端口3000(app.listen(3000))上时运行。 我在第220行找到了这个/usr/bin/express: app.set(\'port\', process.env.PORT || 3000); 如前所述:将端口设置为指定的端口,如果未指定则设置为3000。 如何使我的应用程序在其他端口(例如8080或3001)上工作? 谢谢! 编辑:代码示例(非常简单的节点/ Express应用程序) var express = require("express"); var app = express(); app.get('/', function(req, res){ res.send('hello world'); }); // Only works on 3000 regardless of what I set environment port to or how I set [value] …

5
Express-js通配符路由覆盖了路径下的所有内容,包括路径
我试图让一条路线涵盖/foo包括/foo自身在内的所有事物。我试过将/foo*所有东西都用哪一项工作,除非它不匹配/foo。观察: var express = require("express"), app = express.createServer(); app.get("/foo*", function(req, res, next){ res.write("Foo*\n"); next(); }); app.get("/foo", function(req, res){ res.end("Foo\n"); }); app.get("/foo/bar", function(req, res){ res.end("Foo Bar\n"); }); app.listen(3000); 输出: $ curl localhost:3000/foo Foo $ curl localhost:3000/foo/bar Foo* Foo Bar 我有什么选择?我想出的最好的方法是路由/fo*哪个当然不是最佳选择,因为它匹配得太多了。
96 node.js  express 

9
socket.io和会话?
我正在使用快速框架。我想从socket.io访问会话数据。我尝试使用client.listener.server.dynamicViewHelpers数据来表达dynamicHelpers,但是我无法获取会话数据。有没有简单的方法可以做到这一点?请看代码 app.listen(3000); var io = require('socket.io'); var io = io.listen(app); io.on('connection', function(client){ // I want to use session data here client.on('message', function(message){ // or here }); client.on('disconnect', function(){ // or here }); });

8
在Express 4和express-generator的/ bin / www中使用socket.io
所以这是交易:我正在尝试在一个快速项目中使用socket.io。发布Express Js 4之后,我更新了express-generator,现在应用程序的初始功能进入了./bin/www文件,包括那些var(www文件内容:http : //jsfiddle.net/avMa5/) var server = app.listen(app.get('port'), function() {..} (检查通过npm install -g express-generator,然后express myApp 话虽这么说,让我们记住socket.io文档如何要求我们将其触发: var app = require('express').createServer(); var io = require('socket.io')(app); 好的,但是我无法像推荐的那样在app.js中执行此操作。为了正常工作,这应该在./bin/www中完成。在./bin/www中,这是我可以做的事情: var io = require('socket.io')(server) 好的,这行得通,但是我不能在其他任何地方使用io var,我真的不想将我的socket.io函数放在www文件中。 我想这只是基本语法,但我什至无法使用它,甚至不能在www文件上使用module.exports = server或server.exports = servermodule.exports.io = app(io) 因此,问题是:如何使用具有该/ bin / www文件的socket.io作为我的应用程序的起点?

9
节点/快速文件上传
我正在使用节点v0.10.26并表示v4.2.0,而我对节点还是很新的。在过去三个多小时的时间里,我一直在试图将文件上传表单与Node配合使用,这一直困扰着我。在这一点上,我只是想让req.files不返回未定义。我的观点是这样的 <!DOCTYPE html> <html> <head> <title>{{ title }}</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h1>{{ title }}</h1> <p>Welcome to {{ title }}</p> <form method='post' action='upload' enctype="multipart/form-data"> <input type='file' name='fileUploaded'> <input type='submit'> </form> </body> </html> 这是我的路线 var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, …

12
向所有控制台消息添加时间戳
我有一个完整的,已部署的,基于Express的项目,整个过程中都有许多console.log()和console.error()语句。该项目永远使用,将stdout和stderr定向到2个单独的文件。 一切都很好,但是现在我缺少时间戳了-确切知道何时发生错误。 我可以在整个代码中进行某种搜索/替换,或者使用某些npm模块来覆盖每个文件中的控制台,但是除非绝对必要,否则我不想触摸每个模型/路径文件。 有没有一种方法,也许是Express中间件,可以让我在每个调用中添加时间戳,还是必须手动添加?

9
将JSON传递到HTTP POST请求
我正在尝试使用nodejs和请求 [2] 向Google QPX Express API [1]发出HTTP POST请求。 我的代码如下所示: // create http request client to consume the QPX API var request = require("request") // JSON to be passed to the QPX Express API var requestData = { "request": { "slice": [ { "origin": "ZRH", "destination": "DUS", "date": "2014-12-02" } ], …


5
NodeJS / express:缓存和304状态代码
重新加载使用express创建的网站时,使用Safari(而不是使用Chrome)会显示空白页,因为NodeJS服务器向我发送了304状态代码。 如何解决呢? 当然,这也可能只是Safari的问题,但实际上它可以在所有其他网站上正常工作,因此它也必须是我的NodeJS服务器上的问题。 为了生成页面,我将Jade与结合使用res.render。 更新:似乎发生此问题,因为Safari'cache-control': 'max-age=0'在重新加载时发送。 更新2:我现在有一个解决方法,但是有更好的解决方案吗?解决方法: app.get('/:language(' + content.languageSelector + ')/:page', function (req, res) { // Disable caching for content files res.header("Cache-Control", "no-cache, no-store, must-revalidate"); res.header("Pragma", "no-cache"); res.header("Expires", 0); // rendering stuff here… } 更新3: 因此,完整的代码部分当前为: app.get('/:language(' + content.languageSelector + ')/:page', pageHandle); function pageHandle (req, res) { var language …


3
必须使用node.js快速调用res.end()吗?
我有几个Express应用程序,我发现在某些模块中,res.end()该请求是在请求处理程序的末尾(res.send或之后res.json)调用的,而在其他模块中则没有调用。 例如: app.get('/test', function(req, res) { res.send('Test', 200); }); 要么: app.get('/test', function(req, res) { res.send('Test', 200); res.end(); }); 两种情况都有效,但是当我运行许多请求时,我担心泄漏或用完文件描述符之类的事情。哪一个“更正确”?
89 node.js  express 

9
如何在node / express中发送自定义http状态消息?
我的node.js应用程序的建模类似于express / examples / mvc应用程序。 在控制器操作中,我想通过自定义http消息吐出HTTP 400状态。默认情况下,http状态消息为“错误请求”: HTTP/1.1 400 Bad Request 但是我想发送 HTTP/1.1 400 Current password does not match 我尝试了各种方法,但是没有一种方法将http状态消息设置为我的自定义消息。 我当前的解决方案控制器功能如下所示: exports.check = function( req, res) { if( req.param( 'val')!=='testme') { res.writeHead( 400, 'Current password does not match', {'content-type' : 'text/plain'}); res.end( 'Current value does not match'); return; } // …
89 node.js  express 

4
ExpressJS中的req.query和req.param
req.query和req.paramExpress之间的主要区别 两者有何不同 什么情况下何时使用 假设客户端在请求中发送说Android(密钥,值)对.....,使用哪个? [编辑] 假设android发送一个POST请求->目的是向客户端发送(Key,Value)并且服务器应该基于服务器中的值执行数据库查询并返回JSON响应 看::这个问题的方案我引用::简单快速的程序,用于查询结果
89 node.js  express 

6
如何与Socket.IO 1.x和Express 4.x共享会话?
如何与Socket.io 1.0和Express 4.x共享会话?我使用Redis商店,但我认为这没有关系。我知道我必须使用中间件来查看cookie和获取会话,但不知道如何。我搜索了但找不到任何工作 var RedisStore = connectRedis(expressSession); var session = expressSession({ store: new RedisStore({ client: redisClient }), secret: mysecret, saveUninitialized: true, resave: true }); app.use(session); io.use(function(socket, next) { var handshake = socket.handshake; if (handshake.headers.cookie) { var str = handshake.headers.cookie; next(); } else { next(new Error('Missing Cookies')); } });


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.