3

在编写 C++ Node.JS 插件时,require('./someModule')可以加载模块以在已编译的插件中使用的等价物是什么?

我找到了这个方法:

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

如果与我在这里询问的内容结合使用,效果会很好,但我想知道是否有更原生的方式。

4

1 回答 1

7

您应该能够在初始化函数中访问标准模块 require 函数。一般来说,我只是从那里调用它,因为惰性调用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);
于 2013-07-03T16:55:00.957 回答