Articles of 表示

Socket IO WebSocket请求被企业防火墙阻止。

从企业防火墙/代理使用socket.io模块的解决scheme是什么? 这是我正在使用的代码。 // setup express server var app = express() var serv = http.createServer(app); serv.listen(80); // setup socket io – listens in on express store as well for sessions var io = require('socket.io').listen(serv);

如何在Sails.js中gzip JavaScript和CSS资源?

我正尝试在Sails.js(Node)应用程序中为我的资产启用gzip压缩。 在生产环境中启动应用程序时, assets/linker/js和assets/linker/styles中的所有资源都被连接,缩小,成功地成功(在Gruntfile中指定)。 以下输出文件被生成: .tmp/ public/ min/ production.js production.css 我也想添加gzip压缩,因此我已经安装了grunt-contrib-compress并将压缩任务添加到Gruntfile中。 我可以通过成功压缩文件获得以下结果。 .tmp/ public/ min/ production.js production.js.gz production.css production.css.gz 我现在的问题是,服务器需要响应与gzip文件 (当客户端接受编码),而不是正常的,我找不到一个方法来做到这一点。 也许政策是这样做的风帆? 还是有另一种方式来使用快递中间件? 如果有帮助,这是当前的sails-linker任务,它将javascript production.js文件插入到标记中: … prodJs: { options: { startTag: '<!–SCRIPTS–>', endTag: '<!–SCRIPTS END–>', fileTmpl: '<script src="%s"></script>', appRoot: '.tmp/public' }, files: { '.tmp/public/**/*.html': ['.tmp/public/min/production.js'], 'views/**/*.html': ['.tmp/public/min/production.js'], 'views/**/*.ejs': ['.tmp/public/min/production.js'] } }, … 提前谢谢了。

在Mocha中描述()是什么

我正在试着用摩卡弄脏我的双手,这里是我从文档中看到的例子: var assert = require("assert") describe('Array', function(){ describe('#indexOf()', function(){ it('should return -1 when the value is not present', function(){ assert.equal(-1, [1,2,3].indexOf(5)); assert.equal(-1, [1,2,3].indexOf(0)); }) }) }) 大多数例子显示了第二个描述语句 describe('#indexOf()', function(){ 从#indexOf() #开始。 这个#的意义是什么? 为什么这不能简单地写成indexOf ? 我在哪里可以得到对描述如何工作的基本理解? PS:我查看了http://visionmedia.github.io/mocha/#interfaces的文档,但无法弄清楚这些是如何进入画面的,以及这些接口是如何处理的。 谢谢

passportjs LocalStrategy允许比默认的用户名和密码更多的参数吗?

我是新来的JavaScript,节点和passportjs。 对不起如果这是不正确的。 我想在我的护照本地策略中使用3个参数: 用户名,电子邮件,密码 。 可能吗? 如果这样怎么样? 根据passportjs的说法:“默认情况下,LocalStrategy希望能够在名为username和password的参数中find凭据,如果你的站点更喜欢以不同的方式命名这些字段,可以使用选项来改变默认值。 但是我可以添加更多参数吗? 我试过这个: passport.use('local-signup', new LocalStrategy({ // by default, local strategy uses username and password, we will override with email usernameField : 'username', emailField : 'email', passwordField : 'password', passReqToCallback : true // allows us to pass back the entire request to the callback }, function(req, username, email, […]

Node.js,Express和dependency injection

我在一个node.js项目的早期阶段,我正在寻求改善整个应用程序的组织。 在过去,我使用了Symfony2(PHP),现在我在Angular中编写了很多代码,这两个代码都非常依赖DI。 所以,我非常喜欢在我的node.js项目中应用相同的原则。 我知道像Rewire这样的软件包的存在,但现在我想尝试DI方法。 问题是, 如何达到一个平衡,以保持轻量级的感觉,使节点与一个经过良好testing的dependency injection的应用程序的坚实 (我知道,经过充分testing是什么给了坚实;-))。 节点模块 其中一个问题就是如何pipe理外部模块,如果某个对象需要fs模块怎么办? 正如Vojta Jina(来自AngularJS)在这篇文章中所述 : 所以现在最适合我的方式就是这样的:模块是无状态的。 它们只包含类/函数/常量的定义。 所以,我想我必须注入一切: function Foo(fs) { this.fs = fs; } Foo.prototype.doSomething: function () { // this.fs… }; module.exports = Foo; 某处: var fs = require('fs'); var Foo = require('./Foo'); var foo = new Foo(fs); foo.doSomething(); performance 由于Express使用apply()来调用处理程序,所以上下文丢失,我们不能使用this 。 所以我们留下这些: // foo.js function […]

Express节点作为启用pushState的服务器提供没有任何path前缀的任何静态资源

我正在用Ember.js或Backbone.js作为前端MVC,express.js(node.js)作为后端服务器构build单页Web应用程序。 server / app.js代码简而言之 app.use(bodyParser.json()); app.use(express.static(path.join(__dirname, '..', 'client'))); app.get('*', function(req, res) { return res.render('base'); (will sendFile (client/index.html) ) }); 它会加载所有公共资产的客户端/文件夹,客户端文件夹结构如下所示 – client — index.html ( will be rendered as always ) — app (front end mvc code) — assets — images — styles 当前端MVC启用html5 pushstate时,express服务器始终都提供所有匹配的路由,当页面刷新或者url被手动插入到浏览器中时,它将一如既往地呈现index.html。 client / index.html (示例代码) <link rel="stylesheet" href="assets/styles/reset.css"> <link rel="stylesheet" href="assets/styles/base.css"> […]

Node&Mongoose – 保存时出错:TypeError:Object.keys在非对象上调用

在下面的用户架构中有一个foobar.events字段,我试图推送新的哈希(从API POST请求接收)到。 var userSchema = mongoose.Schema({ foobar: { id : String, token : String, email : String, name : String, events : [{ action : String, timestamp : Date, user_xid : String, type : {type: String}, event_xid : String }] } }); 这是Express路线的逻辑: app.post('/foobar/post', function(req, res) { var jb_user_xid = req.body['events'][0]['user_xid']; var jb_timestamp = req.body['events'][0]['timestamp']; […]

如何根据“模式”过滤JSON对象

我使用node.js和express / koa构build了一个RESTful API。 我想过滤JSON数据input – 出于安全原因,以及只有需要的业务特定的属性。 过滤后,业务特定的validation发生。 我如何扔掉不需要的JSON / JS对象属性 – 即属性不在我的数据库架构以及空属性? 根据这个定义架构和filter? 使用例如https://github.com/alank64/json-schema-filter 任何可configuration的过滤可用?

expressjs路由中的可选扩展

我想有一个可选的扩展名,如.xml或.csv或.json (默认,没有扩展将返回JSON)。 app.get('/days-ago/:days(.:ext)?', function(req, res) { 这似乎不工作,有什么我做错了? GET /days-ago/7.xml GET /days-ago/7.csv GET /days-ago/7.json GET /days-ago/7

在login屏幕中禁用stormpath的创build帐户选项

我想在stormpathlogin屏幕中禁用创build帐户。 对API的调用应该已经从用户authentication到应用程序。 我尝试将stormpathEnableRegistration设置为false,但注册function仍处于启用状态。 app.use(stormpath.init(app, { apiKeyFile: config.stormpathapi.apiKeyFile, application: config.stormpathapi.application, secretKey: config.stormpathapi.secretKey, sessionDuration: 1000 * 60 * 30, enableAutoLogin: true, enableUsername: true, stormpathEnableRegistration: false })); 谢谢!