Next.js集成Node-API模块时遭遇模块解析失败(意外字符)问题求助
Next.js集成Node-API模块时遭遇模块解析失败(意外字符)问题求助
各位大佬好,我最近按照步骤创建了一个Node-API模块,想在Next.js项目里集成使用,但过程中碰到了模块解析失败的问题,提示存在意外字符,折腾好久都没解决,特意来求助大家!
先跟大家说下我创建这个Node-API模块的完整流程:
- 第一步:创建模块目录并完成初始化
mkdir addon cd addon npm init -y npm install --save-dev node-gyp npm install node-addon-api
- 第二步:编写
addon.cc文件,代码如下:
#include <napi.h> Napi::String Hello(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); return Napi::String::New(env, "Hello from C++!"); } Napi::Object Init(Napi::Env env, Napi::Object exports) { exports.Set(Napi::String::New(env, "hello"), Napi::Function::New(env, Hello)); return exports; } NODE_API_MODULE(addon, Init)
- 第三步:配置
binding.gyp文件,内容如下:
{ "targets": [ { "target_name": "addon", "sources": [ "addon.cc" ], "include_dirs": [ "<!@(node -p \"require('node-addon-api').include\")" ], "libraries": [], "dependencies": [ "<!(node -p \"require('node-addon-api').gyp\")" ], // 省略了其余编译相关配置项 } ] }
之后我正常编译了这个模块,在普通Node.js项目里测试时,能顺利调用hello()方法并得到预期结果。但把它放到Next.js项目中引入后,直接弹出了模块解析失败的错误,提示内容大致是:Unexpected character '' (Note that you need appropriate loaders to handle this file type, currently no loaders are configured to process this file.),错误指向的是编译生成的.node文件。
我尝试过在Next.js的next.config.js里配置webpack规则,添加对.node文件的处理逻辑,但似乎没起到效果。有没有大佬遇到过类似的问题?能不能指点下,Next.js该怎么配置才能正确加载这个Node-API模块呢?
备注:内容来源于stack exchange,提问作者Mart
相关产品推荐
相关产品推荐

