Articles of 表示

快速路由“/”

在expression式中,当定义我的索引路由时,我使用“/”(这工作),但是,我试图使根可configuration,所以我尝试了以下: var root = ""; // can be whatever, but is sometimes empty app.get(path.join(root, ""), …); 当我启动服务器(并导航到'索引'),我得到一个错误; “ Cannot GET / ”,但不是什么“/”是? 他们有什么不同? 为什么"/"在path.join("", "")不起作用?

Node.js设置错误的内容长度。 我如何设置这一个

我需要一些帮助。 即使我把内容长度设置为响应对象,它似乎不起作用。 我有错吗? res.set({ 'Content-Type': res._data.ContentType, 'Content-Length': res._data.ContentLength, ETag: res._data.ETag }); res.send(res._data.Body); 我使用express和body-parser来发送数据,并且我设置了Content-Length。 res.header('Content-Type', res._data.ContentType); res.header('content-length', res._data.ContentLength); res.header('Cache-Control', 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0'); 我也试过这个。 { AcceptRanges: 'bytes', LastModified: 'Thu, 15 Jan 2015 22:23:43 GMT', ContentLength: '648789', ETag: '"7da971554e6ff4f6dfcdb7b2ba5e0be3"', ContentType: 'image/jpeg', Metadata: {}, Body: <Buffer ff d8 ff e0 00 10 4a 46 49 […]

拦截(并可能拒绝)networking套接字升级请求

我有一个Node.js服务器,我正在发送一个Web套接字升级请求。 此请求的授权标头包含login信息,我需要与数据库条目进行比较。 我不确定如何停止打开Web套接字连接,直到我的数据库查询callback被执行。 以下是我目前正在做的简化: var Express = require('express') var app = Express() server = app.listen(app.get("port"), function () {}) server.on("upgrade", function (request, socket) { //Query database //On success set "authenticated" flag on request (later accessed through socket.upgradeReq) //On failure abort connection }) 这个工作,但是有一个短暂的时间sockets打开,但我没有validation授权标题,所以恶意用户可能会发送/接收数据。 我通过使用“authentication”标志来减轻这种风险,但似乎必须有更好的方法。 我尝试了以下的东西,但他们似乎拦截除升级之外的所有请求: Attempt #1: app.use(function (request, response, next) { //Query database, only call […]

Express4 + Socket.io 0.9:不同的客户端获得相同的非广播消息

这是一个通过passport.js使用validation的网站。 两个不同的用户连接不同的浏览器,他们要求有关他们的用户名的信息。 服务器获取信息并使用socket.io发回。 一切都像一个魅力,但如果两个客户端同时加载页面,其中一个的信息去两个浏览器,看起来像服务器正在写在同一个套接字。 服务器端: server.js: var express = require('express'); var app = express(); var http = require('http').createServer(app).listen(8000), io = require('socket.io').listen(http); socket.js: module.exports = function(app, io) { … io.sockets.on('connection', function(socket) { … //Build the information about the user and send it back var userData = userInfo(); socket.emit('userInfo', userData); … } } 客户端(包含在index.ejs中的JavaScript文件): var socket = […]

从redirect表示护照authentication空白页面

我使用Facebook的身份validation策略使用护照。 我使用angular度为客户端和服务器端表示。 当用户点击loginFacebook,并成功通过身份validation后,我将redirect回主页面。 但是,当我回来时,我总是得到空白页。 刷新后,页面再次罚款。 这是我的实现: facebook.js: 'use strict'; var passport = require('passport'), url = require('url'), FacebookStrategy = require('passport-facebook').Strategy, config = require('../config'), user = require('../../app/user/user.server.controller'); module.exports = function() { // Use the Passport's Facebook strategy passport.use(new FacebookStrategy({ clientID: config.facebook.clientID, clientSecret: config.facebook.clientSecret, callbackURL: config.facebook.callbackURL, profileFields: ['id', 'displayName', 'email'], passReqToCallback: true }, function(req, accessToken, refreshToken, profile, done) […]

使用Gulp Use-Ref和Express

由于Express在编译Jade时没有使用ref ,所以我无法使用 Express -ref ,因为我没有使用Gulp编译我的编译文件。 有谁知道是否有可能得到使用-Ref与快速?,如果可以,请你举个例子。 这将解决很多问题,因为Node的所有资产pipe理者似乎都是非常具体的,而且不具有可扩展性。

使用node.js创build支持javascript的networking爬虫

这并不一定是一个爬虫,但我想这样说更容易理解。 给定HTML,浏览器加载/执行JavaScript(+应用样式) 我想在node.js中执行相同的任务 即。 给定一个html,node.js会加载脚本(通过<script>标记或require()调用)并执行脚本(主要用于渲染) express.js的res.render似乎并不接受html-string作为input。 我怎样才能模拟浏览器的JavaScript渲染能力与节点? 假设node.js获得与浏览器相同的html地址? 你可以想到一个抓取HTML的网页爬虫,并执行JavaScript来呈现页面。 编辑 虽然与常规爬行任务有一个很大的区别,那就是我可以在本地访问大部分JavaScript文件(或任何其他资源)。 我试图呈现在我的服务器启用JavaScript的HTML。

在Webstorm中一次性debuggingAngularJS和NodeJS(没有CORS)

我有一个运行在具有AngularJS前端的NodeJS上的客户机/服务器应用程序。 我想使用Webstorm的内置debuggingfunction,但它不会工作。 想象下面的情景: 我有一个客户端文件夹和服务器文件夹的webstorm项目。 我可以启动客户端和服务器的debugging器,它可以工作。 但是这两个会话都在不同的端口上。 所以,如果不使用CORS并告诉AngularJS使用不同的服务器地址,那么对客户端内部服务器的AJAX请求将不起作用。 在生产版本中,客户端将在服务器下发布,但是为了开发,不需要这样做。 有谁知道如何做到这一点? 就像:系统应该像一个服务器一样,在一个URL下。 还是我的方法愚蠢? 最好的问候,克斯滕

使用中间件与app.use

有什么区别: function setLocale(req, res, next) { req.params.locale = req.params.locale || 'pt'; res.cookie('locale', req.params.locale); req.i18n.setLocale(req.params.locale); console.log(req.params.locale); next(); } app.get('/:locale?', setLocale, function(req, res) { res.render("index"); }); 和这个: app.use(setLocale); function setLocale(req, res, next) { req.params.locale = req.params.locale || 'pt'; res.cookie('locale', req.params.locale); req.i18n.setLocale(req.params.locale); console.log(req.params.locale); next(); } app.get('/:locale?', function(req, res) { res.render("index"); }); ?? 只有第一个工作,如果我尝试使用app.use,代码将打破原因req.params.locale将是未定义的。

如何在vps中运行node.js应用程序

我用express和socket.io创build了一个node.js聊天应用http://socket.io/get-started/chat/ 我在我的本地服务器上运行成功的聊天应用程序。 我必须在我的VPS中部署它。 有什么步骤要做? 我在我的VPS中安装了node express和socket.io,并将所有内容上传到了服务器。 我在puTTY中运行命令$node index.js 。 它说在3000端口上听。 但是当我去那个url获取错误http://******.in/socket.io/socket.io.js 404(未find) 但它运行在我的本地主机非常好。 index.js var app = require('express')(); var url = require('url'); var server = require('http').Server(app); var io = require('socket.io')(server); var numUsers=0; var users={}; app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); server.listen(3000, function(){ console.log('listening on *:3000'); }); io.sockets.on('connection',function(socket){ console.log('connected'); socket.on('send message',function(data,callback){ var msg=data.trim(); if(msg.substr(0,1)=='p'){ msg=msg.substr(1); […]