Tag: 表示

Node Express – redirect到login视图

我试图configuration我的快速应用程序redirect到基于某种逻辑的login页面。 我有以下几点: app.use('/', function(req, res, next){ if(!req.session.accessToken){ //do something here } next(); }); 我有一个login.html文件位于我的应用程序从服务目录的根目录,我只是不确定我需要调用res对象,例如redirect , send 另外,我知道上面实际上会导致无限循环。 这里有什么正确的方法?

使用request-promise嵌套asynchronous请求

我正在使用Visual Studio Online API并试图通过存储库获取分支统计信息。 要做到这一点,我嵌套我的asynchronous调用。 我正在使用请求承诺来解决我的GET请求。 我遇到的问题是在将所有分支添加到顶级模型后,如何返回模型: 当我console.log结果我明显得到[]因为它没有解决分支请求。 var model = []; rp(options) .then(function(repos) { repos.value.forEach(function(repository) { var repo = { id: repository.id, name: repository.name, branches: [] }; var branchOptions = options; branchOptions.url = config.endPoints.base + config.endPoints.branches(repository.id); rp(branchOptions) .then(function(branches) { branches.value.forEach(function(branch) { repo.branches.push({ name: branch.name, behind: branch.behindCount, ahead: branch.aheadCount }); }) }).then(function() { model.push(repo); }); […]

快速发生器不工作

我怀疑我可以改变节点模块的安装位置。我已经在全球安装了快速发生器。 D:\ chirp> npm install express-generator -g 当我尝试跑步 D:\ chirp> express –ejs 在命令提示符中popup错误说 “express”不被识别为内部或外部命令,可操作程序或batch file下面是截图图像

无法访问req.user的属性

我在使用passport.js进行身份validation的Node中编写代码。 console.log(req.user); 回报 { group: 'CuManager', password: 'password', username: 'administrator', cu_id: 2, _id: 569fd3f4328ef124be533caf } 但 console.log(req.user.cu_id); 回报 undefined 我在想,cu_id属性可能是不可用的,由于序列化/反序列化,但它在那里。 我只是无法访问它。 我怎样才能做到这一点? 我需要它 find({cu_id : req.user.cu_id}) 顺便说一句,我不禁想着passport.js是一点点过于复杂(也许我们只是不相处)。 还有什么我可以用来validation用户在节点(我使用快递)?

如何在asynchronous操作期间使Express.jslogging错误

我有这样的代码: exports.listSavedThreads = function (req, res) { SavedThread.find({}).exec().then(function (data) { wat.map(); res.render('home/listSavedThreads'); }); }; wat是未定义的variables,所以上面的代码不起作用,并且res.render()永远不会被调用,但是没有任何东西被打印到控制台,它静静地失败,浏览器被无限加载。 如果我没有承诺就这样做: exports.listSavedThreads = function (req, res) { wat.map(); res.render('home/listSavedThreads'); }; 像往常一样,错误被打印到控制台和浏览器。 我能够打印错误的唯一方法是使用try/catch : exports.listSavedThreads = function (req, res) { SavedThread.find({}).exec().then(function (data) { try { wat.map(); res.render('home/listSavedThreads'); } catch(e) { console.log('Error: ', e); } }); }; 然后在控制台中我看到: Error: [ReferenceError: wat is […]

如何重新启动/更新节点express vhost站点

我在几个网站上工作,都有2个版本,住一个,开发一个。 http://timeprize.com和http://test.timeprize.com它们都运行在相同的端口和服务器上,使用express vhost。 我的虚拟主机应用程序看起来很简单,基本上是这样的: var evh = require('express-vhost'), express = require('express'); /*… some more variable declarations …*/ if ( site_enabled('test.timeprize.com') ) { /**/ evh.register('test.timeprize.com', function() { var app = express(); app = require("../test_app/app.js").run_app(http); return app; }() ); }; if ( site_enabled('timeprize.com') ) { evh.register('timeprize.com', function() { var app = express(); app = require("../live_app/app.js").run_app(http); return app; […]

Express.js res.render()和res.redirect()

伙计们! 我是Express和Node的新手,我的背景大多是前端,所以这可能是一个困惑的问题。 请和我裸着:) 我的快速应用程序中有一条路线,应该执行以下操作: 从外面获取一些数据(OK) 用socket.io显示一个HTML页面,监听消息(OK) 执行一些需要很长时间的计算 每完成一个完成后发送消息槽socket.io(OK) 当所有的计算完成后,显示一个结果页面(问题) 所以,我的代码的简化版本是: module.exports = function(io) { // This is so I can use socket.io inside the route var express = require('express'); var router = express.Router(); [… and other required] router.post('/', function(req, res, next) { res.render('loading'); // This renders the template which holds accepts and renders socket.io messages […]

Express JS – 使用路由和中间件的匿名函数

我刚刚进入Express,并注意到我看到的路由和中间件的每个示例都使用匿名函数。 以下是快递网站的一个例子: router.get('/user/:id', function(req, res){ res.send('user ' + req.params.id); }); 我想知道是否有一个原因,我没有看到任何人使用函数声明。 像这样的东西: router.get('/user/:id', getUserById); function getUserById(req, res) { res.send('user ' + req.params.id); } 我的问题很大程度上是因为我与John Papa的angular度风格指南的经验。 其中,他build议你使用提升你的优势,如下所示: https : //github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#style-y053 他基本上主张在顶部为angular度服务定义“API”,这样您就可以快速地查看服务的可访问成员,而不必除去实现。 如果您使用函数声明,我可以看到与路由相同的潜力。 你可能有这样的用户路由文件: router.get('/user/:id', getUserById); router.get('/users', getAllUsers); router.delete('/user', deleteUser); router.put('/user/:id', updateUser); function getUserById(req, res) { res.send('user ' + req.params.id); } function getAllUsers(req, res) { // implement […]

访问中间件中的应用程序configuration

如何使用express访问中间件function中的应用程序configuration设置? 例如,说我有以下人为的例子,它定义了它自己的模块,我想根据应用程序configuration的结果进行分支。 function fail(req, res, next) { if (app.config.fail === true) { res.json({'err': 'failed'}); } return next(); } 什么是正确的方式来处理这与快递?

如何在express / nodejs中添加标题到静态gzip文件?

我有一些来自Unity构build的文件,我无法添加标题。 他们有扩展jsgz,memgz和datagz。 它们位于我的NodeJs项目中的公共文件夹中。 我正在使用Express 4,并设置了压缩,但我相信这只会压缩现有的文件进行传输,并不处理已压缩的文件。 我已经尝试使用app.get添加标题,但它似乎不工作: app.get('/blah/unitymodels/Release/widget.js', function(req, res, next) { … Check ['accept-encoding'] … if (acceptsGzip) { var gzippedPath = req.url + 'gz'; res.sendFile(gzippedPath, { root: './public', headers: { 'Content-Encoding': 'gzip', 'Content-Type': 'application/javascript' } } … 我已经尝试设置这样的标题,通过使用res.set和先设置它们,然后让下一个()调用处理响应,但每当我得到的文件,它只是gzip文件没有额外的头文件和浏览器不理解它。 我试过的方法是添加其他头文件('wibble','x-timestamp'等),所以我认为别的东西是拦截这些特定的。 我怎么能够返回这些gzip文件,以便浏览器了解他们?