我正在尝试为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中的包含路径中:将光标移动到包含行上并显示错误->选择";快速修复"->;应该有一个用于设置包含路径选项的选项(确切命名是特定于语言的(->打开新的选项卡,在"下添加路径;包括路径";
头文件位于应用程序数据中,如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/**
。或者只是任意指向节点的一个已安装版本,并希望标头在不同版本之间不会有太大变化。。!