Tag: 表示

使用moment.toDate()时,Express 4.13.4中Cookie的有效期限被忽略

我正在尝试设置一个特定的有效期为3个月的cookie。 我可以把cookie设置好,但是为它设置的失效不起作用。 我用momentJS来创build一个我想要的date对象。 从控制台输出正确的时间,但是cookie没有正确的值,它的价值将在几分钟内而不是从date起的3个月内过期。 // Create the date the cookies will expire on var cookieDate = moment().add(6, 'months').toDate(); console.log(cookieDate); res.cookie('username', user.username, { expires: cookieDate }); 我查看了文档,它只是要求将一个Date对象传递给它。 我也看了看周围的stackoverflow和唯一我能find的是这告诉OP使用req.session.cookie这似乎不正确,因为你应该设置一个cookie响应客户端,而不是在一个会话。

在Loopback自定义远程方法中通过多部分表单文件处理file upload

我已经尝试了一切推荐在我怎样才能用LoopBack身体分析器? 但仍然没有运气。 我的客户端应用程序在AngularJS中,使用ng-file-upload模块,具体如下: Upload.upload({ url: apiUrl + '/Recipes/uploadImage', file: $scope.picFile, params: { recipeId: newRecipe.id } }) .then(function(res) { console.log('succes:', res); }, function(err) { console.log('error:', err); }, function(evt) { console.log('progress:', evt); }); 在服务器(Loopback)方面,我确定server/middleware.json已经注册了中间件: … "parse": { "body-parser#json": {}, "body-parser#urlencoded": {"params": { "extended": true }} }, … 对于好的方法,尽pipe我不确定除了multer是否还需要body-parser(因为在middleware.json中注册了body-parser),我已经把这些行包含在server/server.js : var bodyParser = require('body-parser'); var multer = require('multer'); […]

i18n根据select的语言呈现特定的视图

我不确定i18n是否适合这个。 因为看起来这个模块只关注于改变语言属性(在视图渲染中)而不是视图本身。 我希望我解释自己足够:) 所以这个想法是当一个人改变语言时,语言目录中的渲染select了视图(具有相同的文件名)。 你可以有例如这样的目录层次结构: -views –EN —index.jade —contact.jade –NL —index.jade —contact.jade –form-contact.jade 为了清楚'form-contact.jade' , 'form-contact.jade'文件将包含表单(包含在'contact.jade'文件中,所以'form-contact.jade'确实会使用i18n别名对象驻留在en.json或nl.json文件中)。 所以现在我只有以下几点: app.js i18n.configure({ locales: ['en', 'nl'], directory: __dirname + '/locales', defaultLocale: 'en', extension: '.json', register: global }); app.use(i18n.init); app.use(function (req, res, next) { console.log(i18n); if (req.query.lang != undefined && i18n.locales.indexOf(req.query.lang) >= 0) { i18n.setLocale(req.query.lang); }else{ i18n.setLocale(i18n.defaultLocale); } next(); }); […]

在访问Express路线时join一个socket.IO房间

在Express应用程序中访问特定路线时遇到了一些问题, 所以我现在有以下设置: app.js var express = require('express'); var app = express(); var http = require('http').Server(app); var socketio = require('socket.io').listen(http); var socketjs = require(libs + 'sockets/socket.js'); … var server = http.listen(app.get('port'), function() { debug('Taskful server listening on port ' + app.get('port')); log.info('Taskful server listening on port ' + app.get('port')); }); global.socketIO = socketio; socketjs.connect(server); sockets/ socket.js […]

使用TypeScript和types的快车服务器

我试图build立一个快速的Web服务器使用TypeScript,但每次我试图transpile到JS得到这个错误 error TS1008: Unexpected token; 'module, class, interface, enum, import or statement' expected. 我是一个新手,这就是我所做的(使用WebStorm)。 我使用types来安装下面的expression环境依赖关系,即, typings install –ambient –save express 其中创build了以下typings.json文件 { "ambientDependencies": { "express": "registry:dt/express#4.0.0+20160317120654", } } 查看index.d.ts typings\main\ambient\express\中的index.d.ts文件,WebStorm抱怨找不到模块serve-static , express-serve-static-core和mime 。 所以我安装了那些节点,这样typings.json就变成了 { "ambientDependencies": { "express": "registry:dt/express#4.0.0+20160317120654", "express-serve-static-core": "registry:dt/express-serve-static-core#0.0.0+20160322035842", "mime": "registry:dt/mime#0.0.0+20160316155526", "node": "registry:dt/node#4.0.0+20160509154515", "serve-static": "registry:dt/serve-static#0.0.0+20160501131543" } } 然后我添加了下面的tsconfig.json文件 { "compilerOptions": { "target": "es5", […]

passport.js:记住我不能在快速应用程序中工作

我在我的申请中实施了护照本地策略。 现在我要实现记住我的function: app.use(passport.initialize()); app.use(passport.session()); app.post("/login", function (req, res, next) { var authFunction = passport.authenticate("local", function (err, user, info) { if (err) { next(err); } else { req.logIn(user, function (err) { if (err) { next(err); } else { if (req.body.remember) { req.session.cookie.originalMaxAge = 2592000000; } else { req.session.cookie._expires = false; } res.redirect("/"); } }); } }); […]

Express无法读取PUT请求中req.data的属性值

我用express写了一个简单的PUT服务。 现在,当我打电话给PUT服务,并通过它的数据,我发现一些奇怪的东西。 当我使用req.data读取数据时,我可以看到我传递的数据。 但是当我尝试进入req.data的属性,我得到一个未定义的。 这是我的app.js module.exports = function (data) { var express = require('express'); var path = require('path'); var routes = require('./routes/index')(data); var bodyParser = require('body-parser'); var app = express(); // all environments app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(express.static(path.join(__dirname, 'public'))); app.use(function (req, res, next) { […]

Node.js + Express 4 + Passport.js如何获取当前login的所有用户列表?

我已经设置我的Node.js服务器如下: var Express = require('express'); var Path = require('path'); var Favicon = require('serve-favicon'); var Logger = require('morgan'); var CookieParser = require('cookie-parser'); var BodyParser = require('body-parser'); var Passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var Mongoose = require('mongoose'); var Routes = require('./routes/index'); var Users = require('./routes/users'); //var Login = require('./routes/login'); var App = Express(); // view […]

在将路由拆分成不同的文件/模块时,得到“ForbiddenError:无效的csrf令牌”

我在快速项目中使用csurf 。 我有3个文件: app.js – 主入口点 routes / index.js – 索引路由 routes / users.js – 用户路由 它是使用快速应用程序生成器时的标准样板。 我在index.js有一个路由: router.get('/', csrfProtection, function(req, res, next) { res.render('index', { csrfToken: req.csrfToken() }); }); 此路线的页面包含具有带csrf标记的隐藏字段的表单: input(name='_csrf', type='hidden', value='#{csrfToken}') 所有工作正常,我可以看到来源中的csrf标记。 当表单被提交时,它被处理在routes / users.js中购买路由: router.post('/login', csrfProtection, function(req, resp) { if(!validator.isAlphanumeric(req.username)) console.log('Not alphanumeric'); … }); 看起来问题是两个文件必须创build新的csrf实例和csrfToken 。 在这两个path文件的头部,我需要他们这样的: var csrf = require('csurf'); […]

在express.js中的Jade引擎不警告或丢失错误的逗号

我在我的节点/快递应用程序中使用玉作为视图引擎,它工作得很好,甚至更好:)它不会抛出错误或警告,如果标记属性之间缺less逗号。 例如: div.main(data-ng-controller="ctrl" data-ng-form="form") 要么 script(type="text/javascript" src="script.js" charset="utf-8") 编译没有错误,但玉语法文档说使用逗号或新行来分隔标签属性,所以这些应该是正确的线: div.main(data-ng-controller="ctrl", data-ng-form="form") script(type="text/javascript", src="script.js", charset="utf-8") 问题是我在java项目中也使用了相同的jade模板,而java-jade编译器因为缺less属性分隔符而抛出了错误的语法exception。 在我看来,node-jade编译器有一个bug或者什么东西,java-jade编译器以正确的方式工作。 不方便的是,如果我在节点环境中开发页面的时候错过了一个逗号,在构build我的java项目之前我不会注意到这个错误。 是否有可能设置节点玉编译器抛出错误或警告缺less逗号,或者我使用它错了? 快速设置是这样的: app.set('views', 'path/to/views'); app.set('view engine', 'jade'); 多谢你们!