Регистрация встроенных модулей при встраивании Node.js?

В настоящее время я встраиваю Node.js в приложение C++. У меня возникают проблемы при регистрации пользовательского модуля как встроенного для Node.js.

Следующий код - это то, что я пробовал (код модуля скопирован из официальных документов).

#include <node.h>

using v8::Exception;
using v8::FunctionCallbackInfo;
using v8::Isolate;
using v8::Local;
using v8::Number;
using v8::Object;
using v8::String;
using v8::Value;

// This is the implementation of the "add" method
// Input arguments are passed using the
// const FunctionCallbackInfo<Value>& args struct
void Add(const FunctionCallbackInfo<Value>& args) {
  Isolate* isolate = args.GetIsolate();

  // Check the number of arguments passed.
  if (args.Length() < 2) {
    // Throw an Error that is passed back to JavaScript
    isolate->ThrowException(Exception::TypeError(
        String::NewFromUtf8(isolate, "Wrong number of arguments")));
    return;
  }

  // Check the argument types
  if (!args[0]->IsNumber() || !args[1]->IsNumber()) {
    isolate->ThrowException(Exception::TypeError(
        String::NewFromUtf8(isolate, "Wrong arguments")));
    return;
  }

  // Perform the operation
  double value = args[0]->NumberValue() + args[1]->NumberValue();
  Local<Number> num = Number::New(isolate, value);

  // Set the return value (using the passed in
  // FunctionCallbackInfo<Value>&)
  args.GetReturnValue().Set(num);
}

void Init(Local<Object> exports) {
  NODE_SET_METHOD(exports, "add", Add);
}

NODE_MODULE_X(addon, Init, 0, NM_F_BUILTIN);

int main(int argc, char** argv)
{
    return node::Start(argc, argv);
}

Как видите, я регистрирую это через макрос NODE_MODULE_X(addon, Init, 0, NM_F_BUILTIN), Если вы позвоните node::get_builtin_module("addon") после этого вы получите указатель на модуль.

Однако, если вы затем выполните require("addon") в Node.js выдается ошибка, если модуль не найден.

Есть идеи?

0 ответов

Другие вопросы по тегам