Articles of node.js

新手问题部分

我有一个简单的页面,头,菜单,内容和页脚。 我需要将它们分成不同的文件。 通过快速文档阅读后(我创build了4个模板)写下这样的东西: app.get('/', function(req, res) { var response = [null, null, null, null] , everyNotNull = function(elem) { return (elem !== null); }, sendResponse = function(type, str) { switch (type) { case 'head' : response[0] = str; break; case 'menu' : response[1] = str; break; case 'content' : response[2] = str; break; case 'footer' […]

Node.JS Big-Endian UCS-2

我正在与Node.JS合作。 节点的缓冲区支持little-endian UCS-2,但不是我需要的big-endian。 我会怎么做?

NPM保持有问题查找我的节点path

下面是我试图安装Node-Proxy的例子,因为NowJS需要它: sudo npm安装节点代理 > node-proxy@0.5.2 install /home/jennifer/node_modules/node-proxy > make BUILDING: C++ Component Checking for program g++ or c++ : /usr/bin/g++ Checking for program cpp : /usr/bin/cpp Checking for program ar : /usr/bin/ar Checking for program ranlib : /usr/bin/ranlib Checking for g++ : ok Checking for node path : not found Checking for node prefix : […]

Javascript正则expression式:匹配文本不是HTML标记的一部分

我真的希望有一个在node.js中可执行的正则expression式(所以没有jQuery的DOM处理等,因为标签可以有不同的嵌套),匹配所有不是HTML标签的文本或其中的一部分到单独组。 例如,我希望从该string匹配“5”,“ELT。”,“SPR”,“”,“plo”,“Unterricht”,“”,“nbsp”和“plo” <tr class='list even'> <td class="list" align="center" style="background-color: #FFFFFF" > <span style="color: #010101">5</span> </td> <td class="list" align="center" style="background-color: #FFFFFF" > <b><span style="color: #010101">ELT.</span></b> </td> <td class="list" align="center" style="background-color: #FFFFFF" > <b><span style="color: #010101">SPR</span></b> </td> <td class="list" style="background-color: #FFFFFF" >&nbsp;</td> <td class="list" align="center" style="background-color: #FFFFFF" > <strike><span style="color: #010101">pio</span></strike> </td> <td class="list" align="center" style="background-color: #FFFFFF" […]

在PhoneGap应用上执行授权(通过脸书)REST请求到我的node.js服务器

由于这个问题是关于三种技术,我想快速介绍它们中的每一个: node.js:在服务器端的JavaScript(认为它是我的networking服务器) PhoneGap:允许我用HTML / Javascript / CSS编写Android应用程序的框架。 Facebook身份validation:使用everyauth让我的用户使用他们的Facebook帐户login 目标 :我需要我的PhoneGap应用程序使用基于REST的协议与我的服务器进行通信。 这些请求中的很多只能在用户使用他们的Facebook账户login到我的服务器时进行。 因此,用户需要login,然后进入PhoneGap应用程序的login状态。 问题 :当我设置facebook的everyauth我基本上有一个URL,像domain.com/auth/facebook将redirect到Facebook的login“popup”。 当用户接受login时,服务器将知道,到目前为止一切都很好。 问题是这样的 用户现在必须redirect到某个外部URL,而他应该简单地回到PhoneGap应用程序(处于login状态) PhoneGap应用程序不会检索身份validation令牌,也不会检索身份validation是否成功,因为login过程是在外部URL domain.com/auth/facebook中完成的,而PhoneGap应用程序的HTML则存储在电话本身上并从其中运行 问题的原因:出现此问题的原因不在于正常的Web应用程序,而是PhoneGap应用程序的HTML文件存储在电话本身中,并通过domain.com/auth/facebook进行身份validation成为一个不同的领域。 build议的方法#1 :PhoneGap用户build议我使用PhoneGap的Android-Facebook插件 。 这里的问题是服务器不作为authentication中间人。 因此,用户将不得不通知服务器他们的authentication令牌,而不是服务器通知用户成功的authentication过程和相应的令牌的正常方法。 这似乎是一个严重的漏洞。 我应该如何解决这个问题?

是否有任何框架在node.js中做实时模型?

我知道的https://github.com/andyet/Capsule和https://github.com/codeparty/racer 还有什么?

Mongoose.js吞下保存callback中的错误?

这是一个孤立的问题的例子: var assert = require('assert') var mongoose = require('mongoose') var Schema = mongoose.Schema , ObjectId = Schema.ObjectId; mongoose.connect("mongodb://localhost/some_db"); var BlogPostSchema = new Schema({ title : String , body : String , date : Date }); var BlogPost = mongoose.model('BlogPost', BlogPostSchema); var bp = new BlogPost({title: 'blogpost 0'}) bp.save(function(err) { console.log("this will print 0") assert.equal(1, 1) […]

当使用Node.js进行网页抓取时,我可以在网页上运行所有的JavaScript吗? (即模拟一个真正的浏览器?)

我正在尝试使用node.js进行一些networking抓取。 使用jsdom ,很容易加载DOM并注入JavaScript。 我想更进一步:运行从网页链接到的所有JavaScript,然后检查生成的DOM, 包括元素的视觉属性(高度,宽度等)。 到目前为止,当我试图用jsdom检查DOM元素的维度时,我得到了NaN 。 这可能吗? 这让我感到有两个截然不同的挑战: 在网页上运行所有的JS 除了DOM之外,还要让Node来模拟窗口/屏幕渲染 另一种方法来问这个问题:是否可以使用node.js作为一个完全无头的浏览器,你可以脚本? 如果这是不可能的,有没有人有什么图书馆我可以用来做这个build议? 我相对语言不可知论者。

在redis键/值内使用多个值进行search

我被告知在我的Heroku应用程序中使用Redis进行authentication的用户,所以我决定跳槽。 我想要做的是在Redis商店中存储用户的哈希值,如下所示: { id:4532143215432, username:'davejlong', email:'dave@davejlong.com' } 然后我希望能够通过用户名或ID进行search。 不知何故,Redis可以这样做吗? 我正在使用支持任何redis命令的node.js redis模块https://github.com/mranney/node_redis

Expressjs bodyParser和连接forms

我用连接forms上传图像。 但是,如果我使用bodyParser()它是行不通的。 而相反,如果我不使用bodyParser,我不能上传文件? 我如何让他们一起玩? 这是我的configuration: app.configure(function() { app.register('.html', require('ejs')); app.set('views', __dirname + '/../views'); app.set('view engine', 'html'); app.use(gzippo.staticGzip(__dirname + '/../public'),{ maxAge: 86400000 }); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(form({ keepExtensions: true, uploadDir: __dirname + '/../tmp' })); app.use(express.cookieParser()); app.use(express.session({ secret: 'test', cookie: { secure: true }, store: new MySQLSessionStore(client.database, client.user, client.password) })); app.use(expressValidator); app.use(app.router); app.use(express.csrf()); });