Articles of 快车

快速自定义模块不加载在Heroku上

请参阅以下更新 我用Express写了一个Node.js应用程序,在本地工作正常,但是当我在Heroku上运行应用程序时,它给了我以下错误: 2013-01-19T21:55:42+00:00 app[web.1]: module.js:340 2013-01-19T21:55:42+00:00 app[web.1]: throw err; 2013-01-19T21:55:42+00:00 app[web.1]: ^ 2013-01-19T21:55:42+00:00 app[web.1]: Error: Cannot find module './blog/blog' 2013-01-19T21:55:42+00:00 app[web.1]: at Function.Module._load (module.js:312:12) 2013-01-19T21:55:42+00:00 app[web.1]: at Module.require (module.js:362:17) 2013-01-19T21:55:42+00:00 app[web.1]: at Object.Module._extensions..js (module.js:467:10) 2013-01-19T21:55:42+00:00 app[web.1]: at require (module.js:378:17) 2013-01-19T21:55:42+00:00 app[web.1]: at Object.<anonymous> (/app/app.js:15:12) 2013-01-19T21:55:42+00:00 app[web.1]: at Function.Module._resolveFilename (module.js:338:15) 2013-01-19T21:55:42+00:00 app[web.1]: at Module.load (module.js:356:32) 2013-01-19T21:55:42+00:00 […]

express / node.js API中有效的服务器端JavaScript内存pipe理

概观 过去我已经对JavaScript内存pipe理进行了一些阅读,并且意识到了循环DOM引用等问题。 然而,我仍然有点不舒服,因为这意味着服务器端的JavaScript环境,比如node.js ,更确切地说,是一个用express编写的API。 拿这个示例文件(让我们称之为server.js) var npm_moduleA = require('npmA')({ someInitArg : 'blah' }), app = express.createServer(); app.get('/api/foo', function (req, res) { var result = npm_moduleA.doSomething(); res.send(result); }); app.get('/api/bar', function (req, res) { var npm_moduleB = require('npmB')({ someInitArg : 'blah' }), result = npm_moduleB.doSomethingElse(); res.send(result); }); 问题(假设这是一个高负荷的网站) npm_moduleA的生命周期是npm_moduleA ? 它是在服务器启动的时候创build的,但是什么时候(如果有的话,GC会对它进行攻击) – 我猜测它永远不会被触及,因为它在全局范围内? 在'/ api / bar […]

HTTP补丁XmlHttpRequest支持

我正在做一些待办事项的应用程序,并希望使用HTTP方法PATCH添加和删除待办事项的,因为这将在语义上比PUT更好。 在后端我使用express.js(node.js)和前端backbone.js(使用jQuery的Ajax)。 我已经试过,如果它实际上在我的本地开发套件(Archlinux,Chromium 20,node.js 0.8,Express 2.X)的后端和前端工作,它的工作原理: app.js app.patch('/todo/:id', function(req, res){ console.log('patch successfull'); } 铬networking控制台 $.ajax({ url: '/messages/4ff13720f00e2e2c4b000006', type: 'PATCH', data: { body: 'that is a patched message' } }); 请求被提及,并且在没有例外的情况下也可以进行数据库操 我现在想知道其他浏览器如何支持修补程序方法。 我看着谷歌,但很难find一些东西,因为PATCH有多重意义…

res.json发送后无法设置标题

我正在学习节点Js,我正在尝试做一个简单的订阅/日志应用程序。 我有问题与res.json不按预期工作。 当我尝试订阅时出现此错误: 发送后无法设置标题 这是我的服务器端脚本: var express = require('express'); var swig = require('swig'); var ent = require('ent'); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); var session = require('express-session'); var app = express(); // Environnement app.set('port', process.env.PORT || 3000); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use("/public", express.static(__dirname + "/public")); app.engine('html', swig.renderFile); app.set('view engine', 'html'); app.set('views', __dirname […]

如何正确处理Express中的错误?

我开始与Express JS合作,并遇到了一个问题。 我似乎无法弄清楚处理错误的正确方法。 例如,我有一个Web服务API,提供一个名为“事件”的对象。 我想返回一个简单的string“无法find事件”,当用户提交一个事件ID没有find。 这是我目前正在构build我的代码: app.get('/event/:id', function(req, res, next) { if (req.params.id != 1) { next(new Error('cannot find event ' + req.params.id)); } req.send('event found!'); }); 当我提交一个不是1的id时 ,节点崩溃,输出如下: http.js:527 throw new Error("Can't set headers after they are sent."); ^ Error: Can't set headers after they are sent. at ServerResponse.<anonymous> (http.js:527:11) at ServerResponse.setHeader (/usr/local/kayak/node_modules/express/node_modules/connect/lib/patch.js:62:20) at […]

适用于Express + MongoDB的最佳会话存储中间件

我正在寻找最好的中间件来存储MongoDB中的会话数据,以便在使用express的生产应用程序中使用? 我一直在环顾四周,发现这一点: session-mongoose ( https://github.com/donpark/session-mongoose )根据作者的评论,这不是生产就绪的原因如下: testing不足 零优化 有更好的select比MongoDB会话存储 connect-mongo ( https://github.com/kcbanner/connect-mongo ) express-session-mongo ( https://github.com/davglass/express-session-mongo ) 基于这些类 Sencha连接内存存储 ciaranj的快速会议mongodb connect-session-mongo ( https://github.com/bartt/connect-session-mongo ) 我一直在看他们的代码,我试图find一个性能comparisson文章。 你们有经验来推荐哪一个最好?

ExpressJS的Razor视图引擎

我一直在用NodeJS,ExpressJS等,并且真的希望能够有一个模板引擎更接近ASP.Net MVC的节点(jshtml)的Razor引擎。 我很好奇,如果有人熟悉这样一个野兽,或更接近它。 我想要的主要function是基于区域/部分插入对主/父布局/模板,这似乎不是模板引擎中的function,我已经看到的节点到目前为止。 – 编辑:2012-02-09 – 我基本上想要能够做到以下… _layout.jshtml <!DOCTYPE html> <html> <head> <!– meta tags, etc –> <!– title set in page –> <title>@ViewBag.Title</title> <!– site-wide styles –> @RenderSection("Styles", false) </head> <body class="@ViewBag.PageClass"> <!– site-wide header –> <div id="side_content"> @RenderSection("Side", false) </div> <div id="main_content"> @RenderBody() </div> <!– site-wide footer –> <!– site-wide scripts –> […]

如何在Express 4.0中发送Flash消息?

所以我的web应用程序需要身份validation,并且我有一个注册页面,如果用户尝试使用已经在数据库中的电子邮件注册,我想向他们显示错误消息。 我试图做这个在html端使用这个代码: <% if (message.length > 0) { %> <div class="alert alert-danger"><%= message %></div> <% } %> 在我的路线中这样做: router.get('/signup', function(req, res) { res.render('/signup', { message: req.flash('signupMessage') }); }); 我已经尝试设置configuration的东西沿线: app.configure(function() { app.use(express.session({ secret : 'keyboard cat' })); }); 但是这给了我一个TypeError: 12:11:38 web.1 | app.configure(function() { 12:11:38 web.1 | ^ 12:11:38 web.1 | TypeError: Object function (req, […]