Tag: 表示

一个单元如何testingExpress的路线?

我正在学习Node.js,并且一直在玩Express 。 真的很喜欢这个框架,但是我很难弄清楚如何编写一个path的单元/集成testing。 能够unit testing简单的模块很容易,并已与摩卡做; 然而,我的unit testingExpress表示失败,因为我传入的响应对象不保留这些值。 testing路由function(routes / index.js): exports.index = function(req, res){ res.render('index', { title: 'Express' }) }; unit testing模块: var should = require("should") , routes = require("../routes"); var request = {}; var response = { viewName: "" , data : {} , render: function(view, viewData) { viewName = view; data = viewData; […]

传递参数要求(加载模块时)

使用require加载模块时,是否可以传递参数? 我有模块,login.js提供loginfunction。 它需要一个数据库连接,我想要在我的所有模块中使用相同的数据库连接。 现在我导出一个函数login.setDatabase(…),让我指定一个数据库连接,并且工作得很好。 但我宁愿通过数据库和任何其他要求,当我加载模块。 var db = … var login = require("./login.js")(db); 我很新的NodeJS和通常开发使用Java和Spring框架,所以是的…这是一个构造函数注入:)是否有可能做类似于我上面提供的代码?

在expressjs中使用next()将variables传递给下一个中间件

那么我的问题是我想通过一些variables从第一个中间件到另一个中间件,我尝试这样做,但有req.somevariable是一个给定的'未定义'。 //app.js .. app.get('/someurl/',middleware1,middleware2) … ////middleware1 … some conditions … res.somevariable = variable1; next(); … ////middleware2 … some conditions … variable = req.somevariable; … 谢谢回答。

在EJS模板(使用ExpressJS)中检查variables的存在的正确方法是什么?

在EJS的github页面上,有一个简单的例子: https : //github.com/visionmedia/ejs 例 <% if (user) { %> <h2><%= user.name %></h2> <% } %> 这似乎是检查名为用户的variables的存在,如果它存在,做一些东西。 杜,对不对? 我的问题是,如果用户variables不存在,为什么世界上会抛出一个ReferenceError? 这使得上面的例子无用。 什么是检查variables存在的适当方法? 我希望使用try / catch机制,并抓住ReferenceError? ReferenceError: user is not defined at IncomingMessage.anonymous (eval at <anonymous> (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:140:12)) at IncomingMessage.<anonymous> (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:142:15) at Object.render (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:177:13) at ServerResponse.render (/usr/local/lib/node/.npm/express/1.0.7/package/lib/express/view.js:334:22) at Object.<anonymous> (/Users/me/Dropbox/Projects/myproject/server.js:188:9) at param (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:146:21) at pass (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:162:10) at /usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:152:27 […]

node.js,错误:找不到模块'express'

我是node.js的新手,尝试学习快速构build我的第一个Web应用程序。 被困在我的第一个示例代码。 需要一些帮助,让它运行。 在我发布这个问题之前,我没有search堆栈溢出,发现了一些类似的问题,但仍然无法解决它。 错误:找不到模块'express' 我使用的是Mac OS 10.8.2。 我使用nvm安装了node.js。 node.js:0.8.20 path to node:/Users/feelexit/nvm/v0.8.20/bin/node path to express:/ Users / feelexit / nvm / node_modules / express 这里是我的示例代码:这个文件位于: /Users/feelexit/WebstormProjects/learnnode/node_modules/index.js var express = require('express'); var app = express(); app.get('/', function(req, res){ res.send('welcome to express'); }); app.listen(3000); 当我尝试运行这个文件“node index.js” 我收到以下错误消息,请帮我解决它。 谢谢 。 Error: Cannot find module 'express' at Function.Module._resolveFilename […]

Node.js + Express:路由与控制器

新的Node.js和Express,我想了解两个似乎重叠的概念,路线vs控制器。 我见过简单的例子app.js + routes / *,这似乎足以路由所需的各种请求。 不过,我也看到有人在讨论使用控制器,而有些则暗示更为正式的MVC模型(???)。 如果有人能够帮助我清除这个谜团,那将是非常棒的,如果你有一个在Node.js + Express框架中设置控制器的好例子,那将是非常棒的! 谢谢,

rest与Express.js嵌套路由器

假设我想让REST端点看起来像这样: /user/ /user/user_id /user/user_id/items/ /user/user_id/items/item_id 每个CRUD都是有道理的。 例如,/ user POST创build一个新用户,GET获取所有用户。 / user / user_id GET只提取一个用户。 项目是用户特定的,所以我把它们放在user_id下,这是一个特定的用户。 现在要使Express路由模块化,我做了几个路由器实例。 有一个用户的路由器,并为该项目的路由器。 var userRouter = require('express').Router(); userRouter.route('/') .get(function() {}) .post(function() {}) userRouter.route('/:user_id') .get(function() {}) var itemRouter = require('express').Router(); itemRouter.route('/') .get(function() {}) .post(function() {}) itemRouter.route('/:item_id') .get(function() {}) app.use('/users', userRouter); // Now how to add the next router? // app.use('/users/', itemRouter); item的URL是user的URL分层结构的后代。 […]

如何知道用户是否使用passport.jslogin?

我一直在阅读passport.js信息和样本两天,但我不确定之后,我做了所有的身份validation过程。 我怎么知道我是否login,例如,我将有一个导航栏与login或注销button,有一些像下面的代码的variables? if (login) <button>logout</button> else <button>login</button>