2013-07-03 23 views
2

編寫C++ Node.JS插件時,相當於require('./someModule'),因此可以在已編譯的插件中使用模塊。使用C++插件調用需求

我發現這個方法:

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

這要是配合使用what I asked here將很好地工作,但我不知道是否有一個更原始的方式。

+0

你的意思是'C++'我假設? – loganfsmyth

+0

@loganfsmyth對,對不起 – topherg

回答

6

您應該能夠在初始化函數中訪問標準模塊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);