首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js C++ addons: how to create JS Date object by N-API and V8 in Node.js 10

Node.js C++ addons: how to create JS Date object by N-API and V8 in Node.js 10
EN

Stack Overflow用户
提问于 2019-03-23 04:02:46
回答 1查看 317关注 0票数 2

从11.11.0版本开始,Node.js中出现了napi_create_date函数。https://nodejs.org/api/n-api.html#n

有哪些解决方法可以仅使用N-API和V8 API在Node.js 10.15.3上创建JS日期(从C++ double)?

或者我可以从N-API得到V8隔离?

或者,我如何结合N-API和NAN来创建日期并在napi_call_function中使用它?

我需要一些方法来为napi_call_function调用创建一个日期值(从C++ double)。

EN

回答 1

Stack Overflow用户

发布于 2019-03-24 16:21:30

现在,我写了一个这样的变通方法。使用env->context()而不是v8::Isolate::GetCurrent()更正确,但是napi_env是在src/js_native_api_v8.h中定义的,而~/.node-gyp/10.15.3/include/node中不存在,所以我没有找到使用env->context()的快速方法。

代码语言:javascript
复制
#include <v8.h>

// This asserts v8::Local<> will always be implemented with a single
// pointer field so that we can pass it around as a void*.
static_assert(sizeof(v8::Local<v8::Value>) == sizeof(napi_value),
  "Cannot convert between v8::Local<v8::Value> and napi_value");

napi_status napi_create_date_by_v8(
    double time,
    napi_value* result
) {
  v8::Isolate* isolate = v8::Isolate::GetCurrent();

  v8::MaybeLocal<v8::Value> maybe_date = v8::Date::New(isolate, time);
  v8::Local<v8::Value> local = maybe_date.ToLocalChecked();
  *result = reinterpret_cast<napi_value>(*local);
  return napi_ok;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55307051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档