这是我第一次编写nodejs插件,并试图使napi包工作几个小时,但是我没有得到clang来找到napi头文件,因此我无法在vim中得到自动完成,编译器会抛出一个致命的错误。我跟踪了节点-addon-示例回购,但什么都没有。
在vim中,当包含头文件时,我得到以下消息:
✘ 3 #include <napi.h>
4 'napi.h' file not found
5 int main(in [clang: pp_file_not_found] 编译器抛出:
cc1: warning: /usr/include/node/node_api.h: not a directory
/home/prxvvy/workspace/a/source/main.c:3:10: fatal error: napi.h: No such file or directory
3 | #include <napi.h>
| ^~~~~~~~但是,如果我像这样直接包含node_api头,它就能工作,因为据我所知,当安装nodejs时,头文件被安装在/usr/ include /node中,但我觉得这不是最好的工作方式。
3 #include <node/node_api.h>
4 我的binding.gyp文件是:
1 {
2 "targets": [
3 {
4 "target_name": "lib",
5 "cflags!": ["-fno-exceptions"],
6 "cflags_cc!": ["-fno-exceptions"],
7 "cflags": ["-Wall", "-Wno-psabi", "-std=c++14", "-pthread"],
8 "cflags_cc": ["-Wall", "-Wno-psabi", "-pthread"],
9 "sources": ["./source/lib.c", "./source/lib.h", "./source/main.c"],
10 "include_dirs": [
11 "<!(node -p \"require('node-addon-api').include_dir\")",
12 "../node_modules/node-addon-api",
13 "node_modules/node-addon-api",
14 "/usr/include/node",
15 "/usr/local/include/node",
16 ],
17 "dependencies": ["<!(node -p \"require('node-addon-api').gyp\")"],
18 "defines": ["NAPI_CPP_EXCEPTIONS"],
19 }
20 ]
21 }
~ 如果我错过了什么事,我想得到一些帮助
发布于 2022-01-11 20:48:24
这是:
"<!(node -p \"require('node-addon-api').include_dir\")"
应:
"<!(node -p \"require('node-addon-api').include\")"
如果在根包目录中启动它:
node -p "require('node-addon-api')"
你应该得到有意义的输出
发布于 2022-05-20 17:32:16
如果您愿意使用CMake.js而不是gyp,那么您可以添加
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)您的CMakeLists.txt和clang将能够找到标题。
例如,您可以尝试执行以下步骤:
cd node-addon-examples/build_with_cmake/node-addon-apiset(CMAKE_EXPORT_COMPILE_COMMANDS 1)添加到CMakeLists.txt中npm icd buildcmake ..现在,当您打开node-addon-examples/build_with_cmake/node-addon-api/hello.cc时,您不应该获得napi.h或文件其余部分的错误。
https://stackoverflow.com/questions/70672342
复制相似问题