Tag: v8

运行V8 JavaScript引擎的示例代码时出错

尝试在链接1上运行代码时出现以下错误。请帮助如何解决此问题 链接1: https : //developers.google.com/v8/get_started#audience ————————————错误开始———— ————————– amit-macbook:v8 amit.sood$ g++ -Iinclude hello_world.cpp -o hello_world -Wl,–start-group out/x64.release/obj.target/{tools/gyp/libv8_{base,libbase.x64,snapshot},third_party/icu/libicu{uc,i18n,data}}.a -Wl,–end-group -lrt clang: error: no such file or directory: 'out/x64.release/obj.target/tools/gyp/libv8_base.a' clang: error: no such file or directory: 'out/x64.release/obj.target/tools/gyp/libv8_libbase.x64.a' clang: error: no such file or directory: 'out/x64.release/obj.target/tools/gyp/libv8_snapshot.a' clang: error: no such file or directory: 'out/x64.release/obj.target/third_party/icu/libicuuc.a' clang: error: no such file […]

使v8对象属性和方法对JS可见

我用node::ObjectWrap包装一个C ++对象,并且有一些定义如下的方法: auto tpl = NanNew<v8::FunctionTemplate>(New); tpl->SetClassName(NanNew("className")); tpl->InstanceTemplate()->SetInternalFieldCount(4); NanSetPrototypeTemplate(tpl, NanNew("method1") , NanNew<v8::FunctionTemplate>(Method1) , v8::ReadOnly); NanSetPrototypeTemplate(tpl, NanNew("method2") , NanNew<v8::FunctionTemplate>(Method2), v8::ReadOnly); NanSetPrototypeTemplate(tpl, NanNew("method3") , NanNew<v8::FunctionTemplate>(Method3) , v8::ReadOnly); NanSetPrototypeTemplate(tpl, NanNew("method4") , NanNew<v8::FunctionTemplate>(Method4), v8::ReadOnly); 一切都按预期工作,我可以通过以下方式在JS中创build对象的实例: var classInstance = new className(); 所有的方法工作得很好,但是当我尝试login函数: console.log(classInstance); 我期待看到像这样的东西: { method1 : [Native Function], method2 : [Native Function], method3 : [Native Function], method4 : [Native […]

CPython – 编译dails,PyDateTime_FromTimestamp没有声明?

我正在写一个V8加载项将JavaScript对象转换为Python,反之亦然。 我能够转换各种types,但PyDateTime_FromTimestamp(这是指定为现有的cpython文档: https ://docs.python.org/2/c-api/datetime.html#c.PyDateTime_FromTimestamp)显然是未定义,导致编译失败。 ../src/py_object_wrapper.cc:189:13: error: use of undeclared identifier 'PyDateTime_FromTimestamp' return PyDateTime_FromTimestamp(value->NumberValue()); 有人知道发生了什么事?

在“callback”函数中无法访问V8上下文

我正在写一个NodeJS插件,我使用了一个C库,可以让你在某些事件中注册一个callback函数。 当callback被触发时,我想调用一个NodeJScallback函数。 问题是,在我的Ccallback函数中,当尝试执行与V8相关的任何操作时(例如创buildHandleScope),我会遇到分段错误。 在test.js中: … myaddon.register(function(data) { console.log("data: " + JSON.stringify(data)); }); … 在test.c中: #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <node.h> #include <v8.h> using namespace v8; void WINAPI myEvent(int num, void * context) { HandleScope scope; // Segmentation fault here! Local<Function> * cb = (Local<Function>*)(context); Local<Object> obj = Object::New(); obj->Set(String::NewSymbol("id"), Number::New(num)); const […]

你能把一个匿名方法(函数)dynamic地变成一个命名方法吗?

鉴于此方法: var obj = {}, obj.foo = function () {}; 是否可以在创build后为该方法分配一个名称,使其看起来类似于: var obj = {}, obj.bar = function bar() {}; foo方法是匿名的,并被分配给一个属性。 小节方法被命名并分配给一个属性。 你可以把匿名foo方法dynamic地变成一个名为foo的方法吗? 是否有可以设置或类似的function对象的属性: obj.foo.<name> = Object.keys(obj)[0]; 请不要使用jQuery。 此外,这是在节点服务器应用程序,所以跨浏览器问题将无关紧要。 编辑:我工作的答案是丹尼尔的链接: 如何在Javascript中dynamic设置一个函数/对象的名称,因为它显示在Chrome中 。 这种方法也处理函数的参数。

在使用NAN的Node.js的C ++模块中不调用SetAccessor函数

我正在尝试使用C ++为Node.js创build一个模块。 我得到了模块设置和工作,Node.js看到模块没有问题。 它可以被初始化和去初始化,并且所有的代码似乎都处于工作状态。 不过,我试图用C ++来声明getter和setter来在Node.js中访问,但是它们不能按预期工作。 我使用NAN,所以我试图使用这个代码作为指导: https : //github.com/rvagg/nan/blob/master/test/cpp/settergetter.cpp 下面是代码。 我相当新,所以我可以肯定地使用一点帮助。 非常感谢! node_opus.cc: namespace nodeopus { Persistent<Function> NodeOpus::constructor; NodeOpus::NodeOpus() : encoder( NULL ), // We have no encoder yet sampleRate( 48000 ), // Highest bitrate? channels( 2 ), // Stereo bitrate( 64000 ), // Default bitrate of 64k signal( OPUS_SIGNAL_MUSIC ), // Default of […]

ofstream不创build文件(Node.js插件)

我试图为Node.js创build一个插件 (其中包括)使用ofstream将内容写入我的C ++类中的文件。 std::ofstream license_file; std::string fileContent(*NanAsciiString(args[0])); license_file.open(PATH); //file doesn't yet exist, so create it if(!license_file) { printf("ERROR: %s (%s)\n", strerror(errno), PATH); } license_file << fileContent; license_file.close(); 如果PATH被设置为与我的Node.js代码(例如./license.txt )相同的目录,这工作正常。 但是,如果它位于其他地方,则不能打开/创build有问题的文件。 例如,使用~/license.txt不起作用(注意:我正在运行OSX)。 报告的错误总是No such file or directory – 即使我物理创build~/license.txt 。 任何想法,为什么这个工程在一个目录,但不是其他人? 如果这是一个权限问题,我会期待一个不同的错误信息。 为了logging,我已经看到关于“ofstream无法创build文件”的约20个其他SO问题,但将其他标志传递到open()没有任何效果。 我有一种感觉,这是与Node / V8内部运行有关。

我怎样才能确定使用哪种编码JSON.stringify()?

我正在放置一个node / express应用程序,它将返回使用JSON.stringify()序列化的JSON。 我想设置Content-Type HTTP头来包含编码信息 – 比如application/json; charset=utf-16 application/json; charset=utf-16 。 我的理解是JSON.stringify()可能会产生UTF-16或UCS-2编码的结果。 我如何知道使用哪种编码来序列化JSON,以及告知用户代理正确编码的最佳方式是什么?

监控Node.js进程以获得每个进程的最大内存使用量

我想要监视在我的机器上popup的任何node.js进程,并最终在进程死亡时打印进程使用的最大内存。 是否有任何监测软件已经做到这一点,如果没有,最好的方法是什么呢? 由于我知道要监视哪种types的Node.js进程, 因此可以在每个进程内部放置一个检查( setInterval ),然后logging这种方式使用的最大内存。 我相信我可以通过process.memoryUsage()访问使用的内存量,只需要存储最大的数量,并在退出时使用process.on('exit') 。 但是,有没有办法监视一组node.js进程? 我怎么知道我在看哪个组? 换句话说,我如何标记某个node.js进程,以便我可以监视不同的组?

为nodeJS(或浏览器)创build一个asychroneous api

大多数NodeJS程序员知道为什么阻塞NodeJS的单线程事件循环是不好的。 例如,在读取文件时,我们知道最好使用fs.readFile而不是fs.readFileSync。 我的问题是:如果由API执行的基本任务本质上是同步的,那么如何创build一个asyn API呢? 换句话说,我该如何去创build一个像fs.readFileSync这样的API,而不是使用事件循环线程来执行底层任务呢? 我必须走出NodeJS和Javascript来做到这一点吗?