Tag: 表示

在Cloud9上发生错误“发送后无法设置标题”

在Cloud9 IDE上同时使用Express和socket.io时出现以下错误: http.js:707 抛出新的错误('发送后不能设置标题')。 ^错误:发送后无法设置标题。 在ServerResponse.OutgoingMessage.setHeader(http.js:707:11) 在ServerResponse.res.setHeader(/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/patch.js:59:22) (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/proto.js:153:13) 在Function.app.handle(/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/proto.js:198:3) 在Server.app(/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/connect.js:65:37) 在Manager.handleRequest(/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/socket.io/lib/manager.js:564:28) 在服务器。 (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/socket.io/lib/manager.js:118:10) 在Server.EventEmitter.emit(events.js:117:20) 在HTTPParser.parser.onIncoming(http.js:2056:12) 在HTTPParser.parserOnHeadersComplete [onHeadersComplete](http.js:120:23) 以下是我的server.js代码: var express = require('express'); var app = express() , http = require('http') , server = http.createServer(app) , io = require('socket.io').listen(server); server.listen(process.env.PORT, process.env.IP); app.get('/', function(req,res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World\n'); }) 我正在使用节点:“0.10.x”,socket.io:“0.9.14”,并表示:“3.x”。 这个错误只会在Cloud9 IDE上出现。 在本地主机上运行良好。 请帮忙。

使用Node Express和Passport捕获锚链接/路由

许多JavaScript框架利用锚标签在SPA内build立路由。 是否有可能捕获锚路由保存在我的会话存储进行身份validation? 例如,利用快递和护照,我有: routes.js //node stuff above app.get('/', auth.savePath, pages.index); auth.js exports.savePath = function (req, res, next) { if (!req.isAuthenticated()) { req.session.returnPath = req.originalUrl return res.redirect('/login') } next() } req.originalUrl不捕获锚path,只有应用程序path和查询stringvariables – 任何想法? 我没有看到任何可以让我捕获这些信息的快速文档。

nodejs http-proxy不转发put请求

我已经使用http-proxy和express中间件做了一个代理。 但是,它不会转发PUT请求,这对于我正在代理的应用程序是必不可less的。 我究竟做错了什么? (代理服务器的目的是为代理服务器后面的应用程序提供身份validation,如果还有其他方法可以这样做的话,我将不胜感激) var proxy = new httpProxy.RoutingProxy(); var app = express(); app.configure(function() { app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.engine('ejs', require('ejs-locals')); app.use(express.logger()); app.use(express.cookieParser()); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.session({secret: 'rupert'})); app.use(flash()); app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); app.use(function(req, res) { proxy.proxyRequest(req, res, { host: 'localhost', port: 8080 }); }); app.use(express.static(__dirname + '/../../public')); }); app.get('/login', function(req, res){ res.render('login', { […]

如何使用Express,Handlebars和Conslidate在Node.js中设置path

我有一个工作的Node.js网站,使用Express.js,Handlebars.js和Consolidate.js。 我想为我的模板的公共部分使用partials,但是不能解决如何使它们适用于不同URL的页面。 我的/views/目录包含这个: _footer.html _header.html article.html index.html 我的Node应用程序的相关部分如下所示: var express = require('express'), consolidate = require('consolidate'), handlebars = require('handlebars'), path = require('path'); var app = express(); app.engine('html', consolidate.handlebars); app.set('view engine', 'html'); app.set('views', path.join(__dirname, '/views')); var partials = {header: '_header', footer: '_footer'}; app.get('/', function(req, res) { res.render('index', {partials: partials}); }; app.get(/^\/([\w-]+)\/$/, function(req, res) { res.render('article', {partials: partials}); […]

nodejitsu 400错误:ENOENT,打开'/opt/run/snapshot/package/images/tmp/72118-89rld0.png

我正在使用nodejitsu来部署一个简单的图像上传程序与快递。 在我的代码中,我通过下面的命令更改了默认的上传目录 app.use(express.bodyParser({ uploadDir: __dirname + "/images/tmp" })); 它在我的本地主机工作正常,但是当我使用nodejitsu我得到这个错误 400错误:ENOENT,打开“/opt/run/snapshot/package/images/tmp/72118-89rld0.png。 任何人都可以告诉我如何使它在nodejitsu上工作? 其实我对节点和nodejitsu都是新手。

通过Passport使用cookieSession

我想用Passport使用Cookie会话存储,因为内存存储不是为生产而devise的: Warning: connection.session() MemoryStore is not designed for a production environment, as it will leak memory, and will not scale past a single process. 这是我的Express初始化: app.use(express.bodyParser({keepExtensions:true})); app.use(express.cookieParser(cookieSecret)); app.use(express.cookieSession({ key: cookieKey, secret: cookieSecret, maxAge: sessionTimeout })); app.use(passport.initialize()); app.use(passport.session()); app.use(express.methodOverride()); app.use(express.static(__dirname + '/public')); 如果我将express.cookieSession更改为express.cookieSession ,一切正常。 使用cookieSession用户login成功时,用户在下次加载页面后不再login。 任何提示如何使护照与cookie会议工作? 我正在使用Express 3.0.0

在grunt服务器中运行ember.js应用程序和node.js后端

我正在研究一个应用程序,它的前端有ember.js,后端有node.js + express.js。 ember.js前面是基于yeoman生成的模板。 在开发过程中,我怎样才能在同一台服务器上运行后端和前端应用程序,并实现“加载”。 yeoman生成的grunt.js文件只在启用了肝启动的服务器上运行ember应用程序。 我不想要一个服务器前端和一个后端。 PS在产品版本中,我通过express静态目录启动节点服务器并提供ember应用程序。 以下是我的节点/快速代码: var gzippo = require('gzippo'); var express = require('express'); var app = express(); app.configure(function(){ app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(gzippo.staticGzip("" + __dirname + "/dist")); // built ember application is deployed in this dir }); app.configure('development', function(){ app.use(express.errorHandler()); }); app.use(function(req, res, next){ console.log('%s %s', req.method, req.url); console.log('__dirname : %s', […]

Node.JS使用Sails.JS框架 – 护照:没有战略注册名称:Facebook

我正在使用Node.JS的Sails.JS框架。 我写了一个config / middleware.js,它有一个validation处理程序并进行初始连接。 该页面当前正在由config / routes.js推送的AuthController上出错。 控制台日志: Fired Facebook error: Error: no strategy registered under name: facebook at attempt (/project/node_modules/passport/lib/passport/middleware/authenticate.js:237:37) at Passport.authenticate (/project/node_modules/passport/lib/passport/middleware/authenticate.js:244:7) at AuthController.facebook (/project/api/controllers/AuthController.js:35:4) Authcontroller.js函数 'facebook': function(req, res, next) { console.log("Fired Facebook"); passport.authenticate('facebook', { failureRedirect: '/auth', scope: 'email' }, function(err, user) { console.log("Fired Login Attempt"); req.logIn(user, function(err) { if (err) { console.log(err); […]

在Node群集上运行多个Node应用程序

我们需要在一组服务器(负载均衡器后面)上部署多个Node / Express应用程序。 这些应用程序在function上完全相互独立。 我将首先解释我是如何考虑这样做的,然后根据最佳实践寻找意见,如果我的devise中有任何红旗。 这是我正在考虑的设置: 负载平衡器后面的前端服务器将运行node-http-proxy,它将接受端口80上的传入请求。此反向代理将将请求路由到在此服务器上的不同端口上运行的相应节点应用程序。 例如: var http = require('http'), httpProxy = require('http-proxy'); var options = { router: { 'myapphost.com/MyFirstApp': 'myapphost.com:3000', 'myapphost.com/MySecondApp': 'myapphost.com:3001' } } // …and then pass them in when you create your proxy. var proxyServer = httpProxy.createServer(options).listen(80); 每个节点应用程序将使用类似于Cluster2的节点群集运行,以利用多核系统。 我的问题: 这是正确的devise和策略? 我们的一些应用程序需要有状态。 在这种设置中进行国家pipe理的最佳方式是什么? 使用Redis等外部会话存储是正确的方法? 或者将会话固定到给定的前端机器并使用内存中的会话存储? 更新: 既然我发表了这个问题,在和几个人交谈之后,还有一个方法来了 – 我可以使用Nginx作为我的前端机器前面的反向代理和负载均衡器。 每个前端机器将只提供一个应用程序。 该应用程序可以有一个备份机器。 […]

浏览器中玉器服务器端传递的variables为空

我有一个奇怪的问题,那就是传递给玉的variables在浏览器中是空的,看起来传入的variables是空的,但它不是 nodejs代码(整个路由代码): exports.sensorsettings = function(req, res){ if (!req.session.username) { // if false render res.render('login', { logo: 'img/owl.png', id: 'home', brand: brand }) } else { if(!req.query.sid) (res.redirect('/dashboard')); // get sid information from database db.collection('sensors').findOne({sid:req.query.sid}, function(err, result) { console.log('this is result:' + result); if (result) { console.log('this is result:' + result.name); result= JSON.stringify(result); res.render('new-sensor-settings', { username: […]