A Go library for building Node.js Native Addons using Node-API.
Use go get to install the library:
go get -u github.com/akshayganeshen/napi-goThen use the library to define handlers:
package handlers
import "github.com/akshayganeshen/napi-go"
func MyHandler(env napi.Env, info napi.CallbackInfo) napi.Value {
  return nil
}Next, create a main.go that registers all module exports:
package main
import "github.com/akshayganeshen/napi-go/entry"
func init() {
  entry.Export("myHandler", MyHandler)
}
func main() {}Finally, build the Node.js addon using go build:
go build -buildmode=c-shared -o "example.node" .The output .node file can now be imported via require:
const example = require("./example.node");
example.myHandler();In addition to the Node-API exposed via package napi, the napi-go/js
package provides functions similar to the syscall/js standard library.
package main
import (
  "github.com/akshayganeshen/napi-go/entry"
  "github.com/akshayganeshen/napi-go/js"
)
func init() {
  entry.Export("myCallback", js.AsCallback(MyCallback))
}
func MyCallback(env js.Env, this js.Value, args []js.Value) any {
  return map[string]any{
    "message": "hello world",
    "args":    args,
  }
}
func main() {}Check out the example addons in docs/examples.