Node.js原生插件:Node_api.h在哪里



我正在尝试为Node.js创建一个本地插件,当我包含时

#include <napi.h>

VS代码的IntelliSense表示它无法检测node_api.h的位置(它包含在napi.h中(。

node-gyp build运行良好,可编译。但我不明白系统中的头在哪里,node-gyp从哪里得到它?我需要添加Intelli-Sense选项的路径,以便更好地理解一般的构建过程。

我正在玩这个代码示例。

我在磁盘C上进行了全面搜索(我在Windows 10上(,发现头文件node_api.h位于中

C:Users<UserName>AppDataLocalnode-gypCache<NodeVersion>includenode

以及诸如CCD_ 6之类的其他报头。

如果删除该文件夹,node-gyp build将不再工作。node-gyp configure再次下载所有头文件并恢复上述文件夹。

您是否使用Microsoft的扩展ms-vscode.cpptools?然后,您应该将napi使用的头文件的路径添加到VSCode中的包含路径中:将光标移动到包含行上并显示错误->选择";快速修复&quot-&gt;应该有一个用于设置包含路径选项的选项(确切命名是特定于语言的(->打开新的选项卡,在"下添加路径;包括路径";

头文件位于应用程序数据中,如RussCoder所述。

另请参见:https://code.visualstudio.com/docs/cpp/customize-default-settings-cpp

您应该看看node-addon-api模块。

标题可以通过require('node-addon-api').include包含,也可以在node_modules/node-addon-api文件夹中找到。

https://github.com/nodejs/node-addon-api/blob/master/doc/setup.md

在macOS上,我发现(安装了Node版本16.17.0(我的node_api.h存储在~/.node-gyp/16.17.0/include/node/node_api.h中。因此,我能够通过路径~/.node-gyp/16.17.0/include/**将其包括在内。

因此,为了在VS代码中获得正确的Intellisense,我编辑了这个配置文件。默认情况下,已经为我设置了相当多的字段,但我对这个问题所做的更改只是为includePath添加了一个额外的路径。

.vscode/c_cpp_properties.json:

{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"~/.node-gyp/16.17.0/include/**"
],
"defines": [],
"macFrameworkPath": [
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "macos-clang-arm64"
}
],
"version": 4
}

您可以通过将路径更改为:来避免对版本进行硬编码

~/.node-gyp/**

但要注意的是,如果安装了多个版本的node,那么最终会包含重复的头文件(而且时间不好(。因此,或者,您可以在~/.node-gyp/current手动设置一个符号链接,指向您正在使用的任何版本的节点,我想,并将您的路径设置为~/.node-gyp/current/**。或者只是任意指向节点的一个已安装版本,并希望标头在不同版本之间不会有太大变化。。!

最新更新