Tag: expression

Express:如何将variables传递给安装的中间件

我刚开始玩Expressjs,我想知道如何将variables传递给安装的中间件/子应用程序。 在下面的例子中,我想把configuration对象传递给我的/ blog / index 在app.js中 var express = require('express'); var app = express(); //… var config = {} //… app.use('/blog', require('./blog/index') 在/blog/index.js中 var express = require('express'); app = module.exports = express(); app.use(express.static(… app.get('/', function(req, res, next) { //handle the req and res } 谢谢,

什么是正确的方式来创build快速请求返回的错误消息?

我有一个函数称为a接受callback,如果有错误,会调用一个错误。 a在快速路由请求中被调用。 如果有错误,错误应该是请求的响应。 function a(cb) { cb(new Error('Some error message')) } app.get('/', function (req, res) { a(function (error) { if (error) { res.json(error, 400) } res.send('No error') }) }) 我已经查看了Express的代码,看来res.json会将我的error res.json 。 但是,这个结果是一个空string: > var e = new Error('Some error message') undefined > JSON.stringify(e) '{}' > e.message 'Some error message' 有一些方法可以让我的路线在这里返回错误信息,比如在我的路线中将错误对象转换为toString 。 不过,我想知道在Node API中格式化错误消息的最佳做法是什么,以及这是否会改变这里的内容。 我应该以不同的方式格式化错误消息,还是应该处理路由中的Error对象,例如: […]

通过gm通过Express.js上传stream文件以消除双重写入

我正在使用Express.js并有一个上传图像的路线,然后我需要resize。 目前我只是让Express写入文件到磁盘(我认为使用node-formidable下),然后调整使用gm (http://aheckmann.github.com/gm/)写入第二个版本到磁盘。 gm(path) .resize(540,404) .write(dest, function (err) { … }); 我已经读过,你可以在将node-formidable文件stream写入磁盘之前获得一个node-formidable ,因为gm可以接受一个stream而不是一个path,所以我应该可以通过消除双重写到磁盘。 我想我需要覆盖form.onPart但我不知道在哪里(应该做Express中间件?),我不知道如何得到一个form或与该part究竟做什么。 这是我在几个地方见过的代码框架: form.onPart = function(part) { if (!part.filename) { form.handlePart(part); return; } part.on('data', function(buffer) { }); part.on('end', function() { } } 有人可以帮我把这两块放在一起吗? 谢谢!

如何在express / node js发送错误http响应?

所以在login页面我发送证书从angular度来expression通过获取请求。我想要做的是,如果在数据库中发现,发送响应和angular度处理,否则,如果没有在数据库中find我想快递发送错误响应,并处理它angular度错误响应函数,但我的代码不工作。 angular度控制器: myapp.controller('therapist_login_controller', ['$scope' ,'$localStorage','$http', function ($scope, $localStorage,$http) { $scope.login=function(){ console.log($scope.username+$scope.password); var data={ userid:$scope.username, password:$scope.password }; console.log(data); $http.post('/api/therapist-login', data) .then( function(response){ // success callback console.log("posted successfully"); $scope.message="Login succesful"; }, function(response){ // failure callback,handle error here $scope.message="Invalid username or password" console.log("error"); } ); } }]); APP.js: app.post('/api/therapist-login',therapist_controller.login); 控制器: module.exports.login = function (req,res) { var userid=req.body.userid; var […]

NodeJS + Express + Mongo Session存储

我目前正在尝试在MongoDb中存储会话。 我尝试了express-session-mongo和connect-mongodb,当我尝试加载login页面时,它们都给了我相同的“500内部服务器错误”。 这让我想,也许在某处与mongoose有冲突。 无论如何,这是我的设置: app.js: var MongoStore = require('connect-mongodb'); var MongoDb = require('mongodb').Db; var Server = require('mongodb').Server; var db = new MongoDb('myDb', new Server('localhost', 27017, {auto_reconnect: true, native_parser: false})); app.configure(function() { app.use(express.logger({format: 'dev'})); app.set('views', __dirname + '/../views'); app.set('view engine', 'jade'); app.set('view options', { layout: false }); app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(mongooseAuth.middleware()); app.use(require('./mysite').middleware()); app.use(express.methodOverride()); }); app.configure('production', function(){ var […]

在快递中处理exception

我无法理解如何处理一些看起来像是expression一个非常基本的方面。 如果我有一些在asynchronouscallback中引发exception的代码,我不能捕捉到这个exception,因为try / catch块在callback运行时不再处于范围之内。 在这些情况下,浏览器将挂起,直到最终放弃说明服务器没有响应。 这是一个非常糟糕的用户体验。 我宁愿能够立即返回一个500错误的客户端。 默认的快速error handling程序显然不处理这种情况。 这是一些示例代码: var express = require("express"); var app = express(); app.use(app.router); //express error handler (never called) app.use(function(err, req, res, next) { console.log(err); res.send(500); }); app.get("/test", function(req, res, next) { require("fs").readFile("/some/file", function(err, data) { ab(); //blow up }); }); app.listen(8888); 在上面的代码中,ab()行会抛出“ReferenceError:a not defined”exception。 定义的error handling程序从不被调用。 请注意,在这种情况下,由fs.readFile()返回的err对象为null,因为文件已被正确读取。 错误是asynchronous处理程序中的代码。 我甚至读过关于使用node的uncaughtExpception的这篇文章 […]

产生ENOENT node.js错误

我已经用express生成器启动了一个node.js应用程序,我有一个奇怪的问题,我无法通过浏览器查看两次页面,第一次加载正常,第二次不是节点进程结束出现以下错误: GET / 304 412ms events.js:72 throw er; // Unhandled 'error' event ^ Error: spawn ENOENT at errnoException (child_process.js:988:11) at Process.ChildProcess._handle.onexit (child_process.js:779:34) 的package.json { "name": "example01-express", "version": "0.0.1", "private": true, "scripts": { "start": "node-dev ./bin/www" }, "dependencies": { "body-parser": "~1.0.0", "cookie-parser": "~1.0.1", "debug": "~0.7.4", "express": "~4.2.0", "jade": "~1.3.0", "morgan": "~1.0.0", "node-compass": "0.2.3", "static-favicon": "~1.0.0" }, […]

节点Body Parser和Cookieparsing器做什么? 我应该使用它们吗?

我已经阅读了所有可以find的文档,但是我找不到这两个中间件所做的简单解释。 body-parser中的body是指什么? 为什么需要parsing身体? 类似的cookie。 我是否正确地解释了cookie-parser “parsing”或啄倒伴随web用户的cookies? 最后,我已经看到Express4中body-parser既不安全也不赞成使用。 我不应该使用它?

JS / node.js中匹配字符的行号

是否有可能在Javascript或node.js中find多行input(如文件)的正则expression式匹配字符的行号?

如何访问express.js中的ejs对象

我用ejs使用express(node.js的web框架)。 现在我想创build我自己的filter,如ejs github页面所述 : To add a filter simply add a method to the .filters object: ejs.filters.last = function(obj) { return obj[obj.length – 1]; }; 问题: 我如何访问这个ejs对象? 我尝试过(天真地)在app.js中: ejs.filters.myfilter = function (obj) { …. } 这给了我错误: ReferenceError: ejs is not defined