Articles of v8

v8从C ++中的nodejs中提取全局对象

我已经使用“–shared”configuration选项编译nodejs。 在我的C ++代码中,我已经在节点(在它自己的线程中)启动了一个脚本: node::Start(argc, argv); 我已经执行了下面的JavaScript将对象放入全局空间: global.someObject = new SomeObject; 我现在在C ++(在另一个线程),我想访问全球“someObject”。 我一直在考虑沿着这些代码使用代码,但隔离可以是NULL: v8::Isolate* isolate = v8::Isolate::GetCurrent(); v8::HandleScope scope(isolate); auto context = isolate->GetCurrentContext(); // no longer crashes auto global_obj = context->Global(); v8::Local<v8::Value> objinfo = global_obj->GetHiddenValue(v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), "someObject")); 任何指针或想法? 如何从C ++中的节点获得有效的隔离variables?

如何在nodejs插件中调用两个参数构造函数?

我是nodejs插件的新手,正在使用现有代码进行即时学习。 我有一种情况,我不明白如何调用特定的C ++构造函数,也不知道如何设置参数的值。 有两个纯粹的C ++构造函数: Nan::Persistent<v8::Function> Event::constructor; // Construct a blank event from the context metadata Event::Event() { oboe_event_init(&event, oboe_context_get()); } // Construct a new event and point an edge at another Event::Event(const oboe_metadata_t *md, bool addEdge) { // both methods copy metadata (version, task_id, flags) from // md to this->event and create a new […]

如何接收nodeJS简单的单行用户input?

我想用我自己的非常简单的控制台运行一个nodeJS应用程序,所以我的问题是如何以直接的方式(任何编程语言的典型)实现它。 我见过如何阅读用户input与NodeJS的文章,但我不知道是否有一个简单的方法已经包括在内。

node.js / V8replace.NET或Java?

我意识到node.js / v8是非常强大的,实际上我们可以用node.js / v8做很多事情。 但它是否足够强大,可以用node.js / v8replace.NET或Java?

我是否应该包装一个完全包含在node.js函数中的C ++对象

我正在尝试写一个node.js的扩展。 我想有一个读取图像的函数(我正在使用opencv)计算一些东西并返回一个值,所以input是一个string,数字是一个数字。 我应该用opencv的Mat来包装吗? 我设法读取图像,但是当我尝试调整它(使用cv :: resize)时,我得到一个exception: C:\ NodeEngine.node 在Object..node(module.js:474:11) 我的设置是Windows 7 64位,Visual Studio 2010(我正在编译一个64位扩展) 谢谢

节点插件和v8 GlobalTemplate

我正在构build节点插件与节点0.10.17并在我的一个类我正在做一个上下文的V8。 我有这个代码: v8::Locker locker; v8::HandleScope handle_scope; v8::Handle<v8::ObjectTemplate> globalTemplate; // vvv————— Exception here at ->Set() globalTemplate->Set(v8::String::New("version"), v8::FunctionTemplate::New(NodeVersion)); context = v8::Context::New(NULL, globalTemplate); if (context.IsEmpty()) { fprintf(stderr, "Error creating context\n"); } 这是给我例外->Set()函数调用。 应用程序正在打破。 我该怎么办 ?

如何简化Eclipse中的debuggingnodejs?

因此,对于您的第一个NodeJS项目,您可以从ChromeDevTools安装适用于Eclipse的V8debugging器 。 而且每当你在Eclipse中有一个新的NodeJS项目,你基本上做的是复制你的Debug Configuration并作出两个更改: 更改连接项目到本地目录的Source Mapper 更改连接项目到本地/远程主机的Source Mapper器 这工作,没问题。 但是Debug Configurations列表的构build和构build。 您将不得不单击debugging下拉菜单,从许多debuggingconfiguration列表中select一个用于当前项目的debuggingconfiguration。 有没有更简单的方法来做到这一点? 有一个NodeJS Debug Configuration ,根据当前项目自动更改Source Mappers ? 要么; 保存项目所需的debuggingconfiguration,并将此特定configuration绑定到当前项目的快捷键或debuggingbutton,所以您不必每次都从列表中select它? 因为我总是需要点击Debug As…下拉菜单并select正确的configuration。 如果我只是点击Debug As…button(小绿色的bug),我总是得到这个: 即使我只是debugging。

我如何全局地添加方法到JSON,date或其他本地对象在nodejs?

我知道这样做是不好的,但仍然是。 我有一个我经常使用的实用程序模块。 在里面,例如,如果我声明, JSON.foo = function(){return "Hi!";}; 那么JSON.foo方法将可用,但只在模块内部。 如何在模块外部使用它,在哪里需要? 即 var utils = require("utils"); console.log(JSON.foo()); // "Hi!"

如何传递Local <Function>作为参数?

我正在使用v8为node.js编写一个C ++库。 我在Windows上,我想从我的C ++代码中调用Win32 API函数EnumWindows 。 EnumWindows接受一个callback函数和可选的callback函数参数作为参数。 我这个C ++库的唯一目标是将EnumWindows公开到javascript-land,并使用如下… mymodule.EnumWindows(function (id) { … }); 所以,我的C ++代码看起来像这样… BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam) { // re-cast the Local<Function> and call it with hWnd return true; } Handle<Value> EnumWindows(const Arguments& args) { HandleScope scope; // store callback function auto callback = Local<Function>::Cast(args[0]); // enum windows auto result […]

比较从parameter passing的string

用C ++创build一个node.js插件。 我想检查传递的参数是否hi 。 节点应用程序: addon.Hello("hi"); C ++: if (args[0]->ToString() != "hi") { ThrowException(Exception::TypeError(String::New("Sunday morning rain is falling…"))); return scope.Close(Undefined()); } 但它一直给我的错误: ../xxx.cc:在静态成员函数'static v8 :: Handle xxx :: New(const v8 :: Arguments&)':../xxx.cc:41:29:error:'operator!= no' '(操作数types是'v8 :: Local'和'const char [6]')if(args [0] – > ToString()!=“hi”){^