nodejs绑定C++库

工具链

  1. nodejs
  2. node-gyp
    https://github.com/nodejs/node-addon-api/blob/main/doc/setup.md

调试

  1. Cmd+Shift+P 输入 configure task 配置一个任务,该任务会执行 npm run rebuild:dev,生成带调试信息的 node 扩展文件。笔者的配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "dev",
"group": "rebuild",
"problemMatcher": [],
"label": "npm: dev",
"detail": "node-gyp configure build --debug"
}
]
}
  1. 点击 debug 按钮之后,下面在 launch.json 中配置调试 node 扩展的任务,注意在配置的时候增加一个 preLaunchTask 任务,该任务就是我们上一步配置的。最终 luanch.json 配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"version": "0.2.0",
"configurations": [{
"type": "lldb",
"request": "launch",
"name": "Debug",
"preLaunchTask": "npm: dev",
"program": "/Users/huangzz/.nvm/versions/node/v18.0.0/bin/node",
"args": [
"/Users/huangzz/Documents/Project/N-API/node-addon/index.js"
]
}]
}

从 launch.json 可以看到整个调试的过程为:vscode 插件调用 lldb,启动 nodejs 去执行 index.js,在 js 文件中会调用 node 扩展,而该部分扩展已经包含了调试信息,故而可以用于调试。

文章

https://yunnysunny.gitbooks.io/nodebook/content/10_node_addon.html
https://academy.realm.io/cn/posts/oredev-kenneth-geisshirt-extending-node-js-cpp/

C++扩展源码示例

  1. https://github.com/kneth/DemoNodeExtension

V8 文档

  1. https://v8.dev/

node-addon-api 文档

https://github.com/nodejs/node-addon-api#api-documentation

发布于

2023-10-20

更新于

2023-10-25

许可协议

评论