Articles of express

在通过.sendFile()响应之前,我应该检查文件是否存在?

说我在我的Express.js应用程序中有这个路由处理程序: app.get('/files/:name', function (req, res) { res.sendfile('path/to/files/' + req.params.name + '.html'); }); 这个path通过Ajax在我的网站上使用。 我不知道是否应该防止服务器上不存在具有所需名称的文件的情况,在这种情况下,服务器将返回404响应。 我可以用这个工作,即在浏览器中检测404,并相应地采取行动(例如向访问者显示一条消息)。 但是,我不确定这是否是一个好方法。 在这里使用404响应是否可以,或者我应该尽可能地避免404响应。 (例如,如果服务器上存在具有所请求名称的文件,并且只有使用.sendFile()如果存在)。 我担心执行手动检查只会减慢速度,因为.sendFile()已经有内置的检查(即可以避免这种检查,而是在浏览器中检测到404响应,这正是我正在做的现在,它工作正常)。

WAV格式的差异(JS / NodeJS)

我正在尝试使用WebRTC来录制audio,然后将其存储在服务器端。 我的服务器是使用NodeJS制作的,而且我正在使用POST将数据从客户端传输到服务器。 在客户端上,我将数据从wav BLOB转换为base64,然后在服务器端读取数据,将其翻译为二进制数据,然后将其写入文件中。 应该没事吧? 只有一个问题:我从客户端下载的内容和发送到服务器的内容之间出现了一些非常不好的不一致之处。 有时它是增加的字节,有时候它只是被删除的数据块。 如果只是添加了字节,那就意味着一个字符集问题(从一个到另一个,然后是另一个等),但是在某些时候我增加了280个字节。 我在这里添加了一个hex diff的图片: http : //i.stack.imgur.com/psqf4.png (抱歉,我没有足够的声望直接发布图片) 另外,运行这些文件给我以下:(uuid.wav是服务器之一,而output(1).wav是客户端之一) 9F2B75D3-4C34-4C8F-935E-FC7637D7A054.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 4 bit, stereo 11321924 Hz output (1).wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz …显然这里有什么问题。 此外,试图修复头,或转换WAV给我一个错误沿线:无法find数据块/数据块大小为0。 任何想法可能是什么原因造成的?

Css覆盖nodejs表示引导

我已经开发了Java + Spring的移动Web应用程序,因为我现在试图在node.js上实现同样的function。 我使用bootstrap.css和styles.css作为我的站点特定的样式和一些bootstrap覆盖。 在我以前的实现中,一切工作都正确,但是现在在nodejs上,所有来自bootstrap的样式都被直接应用到我的标记中,而来自styles.css的所有覆盖都被chrome忽略。 任何想法我错过了什么。 下面是我的问题的示例演示 来自html的一些标记 <div class="row"> <ul id="tabs-menu" class="nav nav-tabs"> <li class="active"><a href="#bollywood" rel="1">Bollywood</a></li> <li><a href="#western" rel="3">Western</a></li> <li><a href="#pakistani" rel="2">Pakistani</a></li> <li><a href="#islamic" rel="4">Islamic</a></li> </ul> </div> CSS检查铬的属性 //from bootstrap .nav-tabs > li > a:hover { border-color: #eeeeee #eeeeee #dddddd; } //from bootstrap .nav > li > a:hover, .nav > li > a:focus […]

节点js(Express)在mongodb操作中冻结

我有一个代码,接受一个post请求,并插入一个string到mongodb数据库。 app.post('/post_comment', function(req, res) { Predicts.findOne({'id': parseInt(req.body.id)}, function(err, card) { console.log('') console.log(card) console.log('') if (card) { Users.findOne( { 'userid': req.user ? req.user.userid : undefined }, function(err, user) { console.log(user) console.log('') Predicts.update({'_id': card._id}, {$push : {comments: {login: user ? user.login : 'anonymous', content: '123'}}}, function(err, card1) {throw(err); console.log('—') console.log(card1); }) }) }}) res.redirect('back') }) 此代码导致node进程完全冻结。 只有重新启动node进程才能提供帮助。 […]

在AngularJS html5mode express环境中提供文件下载

我正在尝试在一个基本上使用angular-fullstack yeoman生成器生成的应用上下载pdf文件。 在app.js中,html5mode设置为true。 我尝试使用标签和hrefbuild立一个下载链接,但没有任何反应。 观看networking活动显示,它不会生成获取请求。 服务器后端是一个服务部分和其他东西的快递服务器。 我怎样才能做到这一点 ?

如何在socket.io事件中访问快速会话?

我目前正在使用express和socket.io,并构build了一个只接受已经login的用户的socket.io连接的应用程序,我举了一个简单的例子。 请参阅io.sockets.on('连接')部分: var express = require('express'); var app = express(); var http = require('http').createServer(app); var io = require('socket.io').listen(http); var sessionStore = new express.session.MemoryStore(); io.set('authorization', function (handshake, accept) { // I got this from a gist. // Don't know the link anymore, though. var cookies = require('express/node_modules/cookie').parse(handshake.headers.cookie); var parsed = require('express/node_modules/connect/lib/utils').parseSignedCookies(cookies, 'SESSION_SECRET'); sessionStore.get(parsed.sid, function (error, session) […]

客户端的JavaScript代码replace

我现在正在学习一些新技术(比如node.js,socket.io,redis等),并且做一些简单的testing应用程序来看看它是如何工作的。 我的问题是关于客户端JavaScript代码的安全性:例如,我有一个聊天服务器上node.js + express,当用户连接到这个聊天,服务器应该分配他的注册用户名(通过老生常用php + mysql授权被使用)到他的sockets。 问题是,用户可以修改他的客户端脚本,并连接到不同的用户名下的聊天? 下面给出一些代码: (分配用户名的服务器端部分,只是从客户端调用获取用户名) // when the client emits 'adduser', this listens and executes socket.on('adduser', function(username){ // store the username in the socket session for this client socket.username = username; // store the room name in the socket session for this client socket.room = 'General'; // add the client's username […]

在Windows Azure上部署节点/快速应用程序时出错

我目前正在试图在Azure上部署一个Express / Node.js应用程序而没有太多的成功 – 我得到的错误是: remote: > libxmljs@0.9.0 install D:\home\site\wwwroot\node_modules\libxmljs remote: > node-gyp rebuild remote: remote: remote: D:\home\site\wwwroot\node_modules\libxmljs>node "D:\Program Files (x86)\npm\1.3.11\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild remote: Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch. remote: MSBUILD : error MSB3428: Could not load the Visual C++ component "VCBuild.exe". […]

ExpressJS在向数据库添加logging后重新查询数据库

我新来expressJS,我想知道什么是最好的方式来重新查询数据库(在我的情况下mongo)以获得所有logging后添加一个。 exports.get = function (db) { return function (req, res) { var collection = db.get('notes'); collection.find({}, {}, function (e, docs) { res.send(docs); }); }; }; exports.create = function (db) { return function (req, res) { var title = req.body.title; var note = req.body.note; var collection = db.get('notes'); // Insert/update the note collection.insert( { "title": title, […]

数据不会从AngularJS控制器传递到NodeJS服务器

我试图从我的客户端AngularJS脚本传递一些值到服务器端NodeJS脚本。 我这样设置POST请求: $scope.addUser = function() { console.log($.param($scope.user)); $http({ method: 'POST', url: '/addUser', data: $.param($scope.user), headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }). success( function(response) { console.log("success"); }). error( function(response) { console.log("error"); }); }; $ scope.uservariables是{ name: "john", email: "doe" } ,当通过$.param($scope.user)传递时,它的计算结果为name=john&email=doe 。 我原本以为问题是请求的内容types,最初是一个JSON对象。 在阅读了类似的问题之后,我把内容types改为了x-www-form-urlencoded,但仍然无法从POST请求中获取数据。 这里是服务器端的NodeJS脚本,它是用POST请求命中的: app.post('/addUser', function(req, res) { console.log(req.params); }); 我知道正在达到服务器端脚本,因为我可以打印出诸如req.method之类的数据,但试图仅以{}方式打印req.params结果。 为什么我的POST参数不能通过?