I'm still new into addons and such. I'm trying to run a simple c++ function that prints "Hello MIKE" into node js. However, I get this following error:
TypeError: addons.greetHello is not a function
at Object.<anonymous> (F:\addons\index.js:6:46)
at Module._compile (internal/modules/cjs/loader.js:1147:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
at Module.load (internal/modules/cjs/loader.js:996:32)
at Function.Module._load (internal/modules/cjs/loader.js:896:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
that's my main cpp
#include<napi.h>
#include <string>
#include "greeting.h"
Napi::String greetHello(const Napi::CallbackInfo& info)
{
Napi::Env env = info.Env();
std::string result = helloUser("Mike");
return Napi::String::New(env ,result);
}
Napi::Object Init(Napi::Env env , Napi::Object exports)
{
exports.Set
(
Napi::String::New(env, "Function"),
Napi::Function::New(env, greetHello)
);
return exports;
}
NODE_API_MODULE(addons, Init)
and my index.js
const addons = require('./build/Release/addons.node');
console.log('exports : ' , addons);
console.log();
console.log('addons.greetHello() : ', addons.greetHello() );
console.log();
Also there something I noticed that wasn't the same as the tutorial I'm following. here that's the function I take from my main cpp: exports : { Function: [Function (anonymous)] } In the tutorial there wasn't that anonymous part, so why does it read mine as anonymous here?
Thanks in advance
Your current invocation will assign the function to the "Function" export, you probably wanted "greetHello". For your other question, you can pass a name to Napi::Function::New
:
exports.Set
(
Napi::String::New(env, "greetHello"),
Napi::Function::New(env, greetHello, "greetHello")
);