node.js — Требование вызова с аддоном C ++

При программировании C ++ Node.JS Addon, что эквивалентно require('./someModule') чтобы модуль мог быть загружен для использования в скомпилированном аддоне?

Я нашел этот метод:

Handle<String> source =
String::New("NameOfLibrary.register(require('./someModule'))");
Handle<Script> script =
Script::Compile(source);
script->Run();

который, если используется в сочетании с что я спросил здесь будет работать хорошо, но мне было интересно, если есть более родной путь.

2

Решение

Вы должны иметь доступ к стандартной функции «требуется модуль» в вашей функции инициализации. Вообще я бы просто позвонил оттуда, так как ленивые звонки require не очень хорошая идея, так как они синхронны.

static void init (Handle<Object> target, Handle<Object> module) {
HandleScope scope;
Local<Function> require = Local<Function>::Cast(
module->Get(String::NewSymbol("require")));

Local<Value> args[] = {
String::New("./someModule")
};
Local<Value> someModule = require->Call(module, 1, args);

// Do whatever with the module
}NODE_MODULE(module_file_name, init);
6

Другие решения

Других решений пока нет …