Tag: v8

如何使用C ++插件中的模块中构build的node.js

我需要使用我的C ++插件模块“crypto”中构build的node.js。 我试图find使用内置模块的C ++插件的例子,但失败了。 我查看了node_crypto.h / .cc,它与node.jsencryption文档,受保护的构造函数等有着不同的函数签名。node_crypto.h包含一个参数的InitCrypto()声明,但是node_crypto.cc没有定义这样的function。 只有InitCrypto有四个参数。 无论如何,我试着用一个参数使用InitCrypto,并得到“符号查找错误”。 我可以将require('crypto')的结果传递给我的插件,然后使用这个对象,但这是不安全的。 我们的JS代码在客户端的服务器上工作。 现在我认为C ++插件使用像openssl lib这样的smth,而不是内置在节点模块“crypto”中更简单。 所以我需要一些使用'crypto'模块的C ++插件的工作例子,或者链接到一些关于这个的文章。 任何使用C ++插件中的内置模块的例子都是有帮助的。

如何在Windows 7上使用npm安装v8-profiler?

试图在Windows7(64位)上安装v8-profiler npm install v8-profiler 注意:1.依赖是Python 2.7,我已经安装并设置了env。 变种。 也 已确认“Visual C ++可再发行组件包”已安装。 node-gyp模块也被安装 但是仍然抛出的错误如下: D:\Projects\Projects\MY_Prjct3\MY_Prjct>npm install v8-profiler npm http GET https://registry.npmjs.org/v8-profiler npm http 304 https://registry.npmjs.org/v8-profiler > v8-profiler@3.6.2-1 install D:\Projects\Projects\MY_Prjct3\MY_Prjct\node_modules\ v8-profiler > node-gyp rebuild D:\Projects\Projects\MY_Prjct3\MY_Prjct\node_modules\v8-profiler>node "C:\Program F iles\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\n ode-gyp.js" rebuild C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.InvalidPlatform .Targets(23,7): error MSB8007: The Platform for project 'profiler.vcxproj' is i nvalid. Platform='x64'. You may […]

追踪meteor/节点光纤中的堆栈溢出

我现在看到了这个崩溃,对节点光纤基础结构不熟悉,不知道从哪里开始解释错误或者检测代码。 Meteor server running on: http://localhost:3000/ W202407-10:06:05.740(-8)? (STDERR) /Users/dauser/.meteor/tools/0b2f28e18b/lib/node_modules/fibers/future.js:173 W202407-10:06:07.363(-8)? (STDERR) throw(ex); W202407-10:06:07.363(-8)? (STDERR) ^ W202407-10:06:07.363(-8)? (STDERR) RangeError: Maximum call stack size exceeded => Exited with code: 8 => Meteor server restarted 据我了解,有些事情反复激烈,服务器堆栈炸毁,崩溃。 不幸的是,我不知道这个违规的function在哪里 – 我看着我的Deps.autorun呼叫(目前只有一个),似乎并不麻烦。 我的代码没有用显式recursion实现,我没有任何理由怀疑大对象传递。 显然,我当然不确定。 我真的只是在寻找关于如何对代码进行testing以向我展示事情失控的build议。 由于meteor在幕后做了大量的工作,如果有人能给我几个关于在哪里看的指针,那将是非常有用的。 刚刚回到这个位置,在哪里看,我还是很迷茫。 这build议更新到节点0.11.x会给我更多的信息,但这样做似乎并没有添加更多的细节,当它崩溃。 崩溃发生在任何页面交互之后 – 也就是服务器启动并运行正常,但是如果我在浏览器中重新加载或者与页面本身进行交互,BOOM! 受欢迎的需求,这里是服务器代码: isAuthorized = () -> console.log "checking authorization" this.userId == […]

为什么V8不能优化try-catch-finally?

为什么V8无法优化try-catch-finally模块,当其他突出的运行时(SpiderMonkey,Chakra)似乎对此没有问题?

检索node.js中的networking接口列表(ioctl SIOCGIFCONF)

我是新来的节点,并利用node_pcap攻击一个节点应用程序来捕获数据包数据,并用它做有趣的事情。 捕获数据的input之一是要侦听的networking接口,即“eth0”。 我认为如果能够以编程的方式查找系统上的可用接口并将它们呈现给程序的用户并允许他们select要监听的接口,那将是非常好的。 在C中,我会使用SIOCGIFCONF来使用ioctl (或带有winsock的ioctlsocket)。 我的问题是,目前是否存在一个机制来做到这一点在节点? 我search了很多,还没有到达任何这样的解决scheme。 如果这个function目前不存在,我会假设我可以使用ioctl在C / C ++中编写一个模块绑定来完成这个任务。 感谢您的时间!

在模块中启用V8中的和谐ES6function?

节点v0.10.20提供了许多关于和谐的选项, –harmony_typeof (enable harmony semantics for typeof) –harmony_scoping (enable harmony block scoping) –harmony_modules (enable harmony modules (implies block scoping) –harmony_proxies (enable harmony proxies) –harmony_collections (enable harmony collections (sets, maps, and weak maps)) –harmony (enable all harmony features (except typeof)) 我明白,这些不是生产就绪的function,并且正在开发中,但其中许多function已经足够好了。 有没有办法在运行时启用它们? "use strict"; "use harmony collections"; 像上面的东西。 即使这些function不仅仅是模块级别的启用,也可以确保它们在模块内部启用,而不是假定它们已启用。

有没有办法正则expression式引用Node.js中的string?

我想创build一个正则expression式匹配stringfoo ,即使foo包含元字符。 这有时被称为RegExp.quote 。 有没有办法在Node.js环境(或者更广泛地说,v8 / Chrome / WebKit / JavaScript)中执行此操作?

nodejs / v8 flamegraph中使用perf_events的未知事件

我试着用Brendan Gregg 在这里描述的使用Linux perf_event进行nodejs分析。 工作stream程如下: 使用–perf-basic-prof运行节点> 0.11.13,它会创build/tmp/perf-(PID).map JavaScript符号映射的/tmp/perf-(PID).map文件。 使用perf record -F 99 -p `pgrep -n node` -g — sleep 30捕获堆栈perf record -F 99 -p `pgrep -n node` -g — sleep 30 使用此库中的stackcollapse-perf.pl脚本折叠堆栈 使用flamegraph.pl脚本生成svg火焰图 我得到以下结果(开头看起来非常好): 问题是有很多[unknown]元素,我想应该是我的nodejs函数调用。 我假设整个过程在第3点失败,其中perf数据应该使用由–perf-basic-prof执行的node / v8生成的映射来折叠。 创build/tmp/perf-PID.map文件,并在节点执行过程中向其写入一些映射。 如何解决这个问题呢? 我正在使用CentOS 6.5 x64,并且已经尝试使用节点0.11.13,0.11.14(包括预构build和编译),但都没有成功。

是否有可能在节点7中使用–harmony_async_await跨asynchronous/等待边界获取堆栈跟踪?

我们正在尝试在节点7中使用–harmony_async_await,并且与使用babel进行asynchronous/等待的传输进行比较,却缺less了具有长堆栈跟踪的function( http://bluebirdjs.com/docs/api/promise.longstacktraces.html )。 显然,如果有一个选项可以“只看到这个” – 在chrome(ium)方面,它们似乎支持它在检查器中,但是最新的工作是在v8 5.4之后(即不在节点7 ): https://bugs.chromium.org/p/v8/issues/detail?id=4483 https://codereview.chromium.org/2357423002/ 另一种方法是让v8使用蓝鸟的诺言实现 – 但我怎么能做到这一点? 重写global.Promise不会改变async / await的行为(他们仍然使用默认的promise)。

确定去优化的原因

首先,这个问题: 我怎样才能确定我的function去优化的原因? 例如,下面是我的一个function的去优化条目: [deoptimizing (DEOPT eager): begin 0x3ca09e9f4d1 mergeObjects (opt #50) @12, FP to SP delta: 96] ;;; jump table entry 8: deoptimization bailout 12. translating mergeObjects => node=43, height=64 0x7fff5fbfecd0: [top + 128] <- 0xcd290004121 ; [sp + 144] 0xcd290004121 <undefined> 0x7fff5fbfecc8: [top + 120] <- 0x3ca09e9ca19 ; [sp + 136] 0x3ca09e9ca19 <an Object […]