Tag: v8

在vm脚本上下文中传递函数

比方说,我有一个库模块,看起来像这样: module.exports = { increment: function() { count++; } } 我想在一个dynamic生成的脚本中使用它,如下所示: (function() { lib.increment(); })(); 通过在沙箱中传递: var sandbox = { count: 1 lib: require('./lib') } var script = new vm.Script('(function() { lib.increment() })();'); script.runInNewContext(sandbox); 我碰到的明显问题是我一方面不能要求“lib”,因为“count”没有在lib.js中定义; 另一方面,如果我在“lib.js”文件的输出上面定义了var count ,那么这个新的countvariables将会受到影响,而不是在沙盒中。 以下是我想尊重的约束条件: 在生成的文件上使用vm而不是eval()和require() 在外部文件中定义“lib” 没有修改自动生成的脚本,所以没有使用lib.increment.apply(context)或类似的东西 到目前为止,我发现的唯一解决scheme是将生成的脚本中的lib函数预先作为string预先定义,或者直接在sandbox对象上定义它们,我发现这是不太理想的select。 在require调用中似乎没有任何方法传递variables的上下文。

切片JavaScript TypedArray多次

我试图将一个typedArray分成更小的块,这个简单的代码片段: const buf = new Uint8Array([0x02, 0x00, 0x07, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x00, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x61, 0x70, 0x70, 0x02]) const len = 5 for (let i=0; i<buf.length;){ const chunk = buf.slice(i, len) console.log("Chunk", chunk, "from", i, "to", i + chunk.length) if (chunk.length) { […]

在create-react-app项目中增加JavaScript堆大小

节点通过传入–max-old-space-size命令行标志来增加堆大小。 在create-react-app项目中,一切都取决于使用react-scripts。 如何在这样的项目中传递这个参数,我应该在哪里做最好的? 谢谢你的帮助。

节点应用程序随着时间的推移逐步进食

我刚刚在DigitalOcean上推出了两个Express服务器以及一个mongodb实例。 我正在使用PM2来保持它们的运行。 当我使用htop查看内存使用情况时,总使用量通常在220-235mb左右(总共488mb)。 我能看到的唯一变化就是蓝色条,我假设它是缓冲区内存,使用中的实际绿色内存似乎总是相同的。 然而我看DO的图表,在过去的24小时内,内存graphics一直在缓慢攀升,比如说每小时总量的0.5%,有时会下降,但是总体上是在上升,目前一直在60左右,几个小时内总内存的65%。 这些节点networking服务器上几乎没有stream量,但是内存不断增加。 所以我的问题是,这可能是我的服务器之一的内存泄漏,还是增加扩展其内存的V8引擎的本质?

在Excel生成文件崩溃之前,Nodejs V8 GC正在通知

我在我的应用程序中使用xlsx图表节点模块。 该模块使用内存从您的数据点生成Excel图表。 有时当我有太多的数据点我的节点js应用程序崩溃,如下所示: <— Last few GCs —> [6420:000000CD560122F0] 77691 ms: Mark-sweep 2047.4 (2086.4) -> 2047.4 (2086.4) MB, 1235.2 / 0.1 ms allocation failure GC in old space requested [6420:000000CD560122F0] 79246 ms: Mark-sweep 2047.4 (2086.4) -> 2047.4 (2086.4) MB, 1141.2 / 0.0 ms last resort [6420:000000CD560122F0] 80808 ms: Mark-sweep 2047.4 (2086.4) -> 2047.4 (2086.4) MB, […]

NodeJS eclipse V8 deb

试图按照https://github.com/joyent/node/wiki/Using-Eclipse-as-Node-Applications-Debugger eclipse设置,项目在工作区,但是当我运行debuggingconfiguration: 无法连接到独立V8 VM超时等待握手 另外,我有多个.js文件。 Eclipse V8插件如何知道哪一个是Node的服务器脚本?

Google的v8引擎与C + + 11

可以V8(Google的开源JavaScript引擎)与C ++ 11一起使用吗?

v8:对象数组

我正在为NodeJS中的v8转换parsing器。 目前我有以下结构 struct Node { short tag; std::string data; Node(std::string input, short tagId) { tag = tagId; data = input; } }; std::vector<Node> elems; 而我正在像这样从循环中填充vector: elems.push_back(Node(STRING, 3)); 我的目标是返回一个像这样的javascript对象: [ { tag: 2, data: "asdsad" }, { tag: 2, data: "asdsad" }, { tag: 2, data: "asdsad" } ] 但是,由于V8文档是蹩脚的,我无法弄清楚如何做到这一点。 我最好的select是制作 Local<Value> data[2] = { Local<Value>::New(Integer::New(2)), […]

将v8对象转换为自定义的C ++对象

我目前正在开发一个nodejs模块,用C ++编写,我一直在寻找一种方法来将v8::Object从opencv转换成cv::Mat对象,现在没有任何运气。 我看到南图书馆可以帮助转换对象,但我不知道如何,我甚至不知道是否有可能在我的情况下转换它们。 v8果汁项目将满足我的期望,但由于它已被放弃,我只是不知道如何做到这一点。 这是我想要做的一个片段: void BRMatcher::run(const v8::FunctionCallbackInfo<v8::Value>& args) { v8::Isolate* isolate = v8::Isolate::GetCurrent(); v8::HandleScope scope(isolate); if (args.Length() < 1) { isolate->ThrowException(v8::Exception::TypeError(v8::String::NewFromUtf8(isolate, "Missing parameter [Mat img]."))); return ; } if (!args[0]->IsObject()) { isolate->ThrowException(v8::Exception::TypeError(v8::String::NewFromUtf8(isolate, "Parameter [Mat img] must be an object."))); return ; } v8::Local<v8::Object> cvMat(args[0]->ToObject()); Mat img = ??? // This is where I ended […]

将对象传递给节点的Error类将返回一个不可访问的对象

我返回一个Error对象,我传递一个对象(而不是一个简单的消息): if (err) { return myCallback(new Error({ error_code: 'sample_machine_readable_code', error_message: 'There is an error in the response from the service.', error: err })); } 而在控制台的结果是[Error: [object Object]] 。 我试图作为一个数组的属性和对象来访问它的属性,但总是以undefined结束。 JSON.stringify它返回一个空对象{} 。 通过“访问”我的意思是试图logging错误,fe与console.log(err); (最后在[object Object] )或err.message或err.Error ,或者err['Error'] ,但这些都是undefined 。 我正在通过Node的错误类文档阅读,似乎可以传递对象。 我错了吗? 我应该只返回一个简单的自定义构造的对象,而不是一个new Error ? 像那样: if (err) { return myCallback({ error_code: 'sample_machine_readable_code', error_message: 'There is an […]