JavaScript内省是完整的

初学JavaScript的问题。 我有点宠爱Python的dir内置函数。 我想要发现node.js REPL中任何对象的属性/方法。 我已经看到了这个问题 。 在一个空数组[]的简单情况下,接受的答案失败(在node REPL中)。 例如: for(var prop in []){console.log(prop);} # returns undefined, prints nothing [].length # returns 0 由于for循环没有发现数组的length方法,我不认为这是正确的自省。 那么,有人可以在这里填空: function magic(some_object) { # magic goes here } console.log(magic([])) # should print a list that includes 'length' 或者,这是不可能的,或者只有“用户types”可能?

sails.js有一个很好的MSSQL / SQL Server适配器吗?

我想说,我真的很喜欢sails.js为一个简单的MVC框架,但觉得它缺乏其文档和API参考。 我search了所有的尝试,find一个好的mssql(SQL服务器)Sails.js适配器的任何信息,但无法find一个。 我希望有人遇到过,并可以推荐它。 我也考虑build立一个自定义的适配器,但发现文档不是有帮助的。 任何帮助这个话题将不胜感激。 谢谢。

nodejs:在执行之前等待其他方法完成

说我有2种方法: function A(callback) { … } function B(callback) { … } 我想执行: 函数C(); A和B都完成后。 我们通常做的是将函数C放在callback函数中,如: A(function() { B(function() { C(); }); }); 现在如果A和B都需要很长时间,我不希望B在A完成后执行。 相反,我想同时启动它们来提高性能。 我在想的是实现一个像信号量(当然不是一个信号量),它在A和B完成后触发一个事件。 所以我可以从事件中调用C. 我想知道的是,有没有库已经实现了上述function? 我相信我不是第一个想做的人。 任何帮助表示赞赏。

node.js:如何pipe道 – YouTube的MP4到MP3

我想将YouTubeurl转换为MP3文件。 目前,我使用节点的ytdl模块下载mp4,如下所示: fs = require 'fs' ytdl = require 'ytdl' url = 'http://www.youtube.com/watch?v=v8bOTvg-iaU' mp4 = './video.mp4' ytdl(url).pipe(fs.createWriteStream(mp4)) 下载完成后,我使用fluent-ffmpeg模块将mp4转换为mp3,如下所示: ffmpeg = require 'fluent-ffmpeg' mp4 = './video.mp4' mp3 = './audio.mp3' proc = new ffmpeg({source:mp4}) proc.setFfmpegPath('/Applications/ffmpeg') proc.saveToFile(mp3, (stdout, stderr)-> return console.log stderr if err? return console.log 'done' ) 我不想在开始mp3转换之前保存整个mp4。 如何将mp4传输到proc,以便在接收mp4块时执行转换?

统计节点http服务器中的访问者

我的源代码: var http = require("http"); var count=1; http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hi, you are number "+count+" visitors"); response.end(); count++; }).listen(8888); 我在每次访问中得到1,3,5,7 ….. 为什么要增加计数2?

在快递中处理exception

我无法理解如何处理一些看起来像是expression一个非常基本的方面。 如果我有一些在asynchronouscallback中引发exception的代码,我不能捕捉到这个exception,因为try / catch块在callback运行时不再处于范围之内。 在这些情况下,浏览器将挂起,直到最终放弃说明服务器没有响应。 这是一个非常糟糕的用户体验。 我宁愿能够立即返回一个500错误的客户端。 默认的快速error handling程序显然不处理这种情况。 这是一些示例代码: var express = require("express"); var app = express(); app.use(app.router); //express error handler (never called) app.use(function(err, req, res, next) { console.log(err); res.send(500); }); app.get("/test", function(req, res, next) { require("fs").readFile("/some/file", function(err, data) { ab(); //blow up }); }); app.listen(8888); 在上面的代码中,ab()行会抛出“ReferenceError:a not defined”exception。 定义的error handling程序从不被调用。 请注意,在这种情况下,由fs.readFile()返回的err对象为null,因为文件已被正确读取。 错误是asynchronous处理程序中的代码。 我甚至读过关于使用node的uncaughtExpception的这篇文章 […]

node.js中的readFileSyncerror handling

我有这个代码 var fd = fs.openSync(filePath,"r"); var fr = fs.readSync(fd, buffer, 0, size, 0); 它会抛出这样的错误 events.js:72 throw er; // Unhandled 'error' event ^ Error: OK, open 'C:\Users\iahmed16\Desktop\eclipse WS\test\images\af31a9e0a98939be82f887b0005c21752e71425e.jpg' 如何处理这个错误? 如果你知道错误的含义是什么?

如何禁用V8的优化编译器

我正在写一个常量string比较函数(对于node.js),并希望禁用V8的这个单一函数的优化编译器; 使用命令行标志是不可能的。 我知道使用with{} (或try / catch)块会立即禁用优化编译器,但是恐怕这个“function”(bug)将在未来的版本中得到修复。 有没有一个不可变的(和文件)的方式禁用V8的优化编译器? function示例: function constantTimeStringCompare( a, b ) { // By adding a `with` block here, we disable v8's optimizing compiler. // Using Object.create(null) ensures we don't have any object prototype properties getting in our way.our way. with ( Object.create( null ) ){ var valid = true, length = Math.max( […]

如何改变selenium webdriver nodejs land中的selenium用户代理?

我在JavaScript +摩卡+节点土地。 我曾尝试将userAgent和“user-agent”设置为function上的键: var webdriver = require('selenium-webdriver'); var ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X)'; var driver = new webdriver.Builder(). … withCapabilities({ 'browserName': 'firefox', userAgent: ua, 'user-agent': ua, }). build(); 有这个答案 ,说使用Firefox的configuration文件,但没有暴露。 没有driver.FirefoxProfile也没有一个暴露在全球范围内, webdriver.FirefoxProfile也没有driver.profiles等 我试过谷歌search,看源和文档,但没有什么关于此。

可以在基于powerpc的Linux上运行Nodejs吗?

我试图用./configure make和make install来构build最新的Linux 64位稳定版本,但是却以这个错误结束: ../deps/openssl/openssl/include/openssl/../../crypto/bn/bn.h:803:23: error: unknown type name 'BN_ULONG' 那么是否真的有可能在Debian ppc上开发nodejs应用? 我的设置是使用Debian Wheezy PPC的iMac G5 PowerPC。