8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何从 Node Native Addon(C++)生成 Typescript 声明文件 .ts.d

Zoli Szabó 2月前

12 0

我有一个 C 函数,我想在 Typescript NodeJS 项目中使用它。工作最小项目示例我创建了 .CPP 文件,该文件使用 N-API 包装我的 C 函数并使其可用于 NodeJS。我创建了...

我有一个 C 函数想要在 Typescript NodeJS 项目中使用。

可运行的最小项目示例

我创建了 .CPP 文件,使用 N-API 并将其提供给 NodeJS。我创建了一个 binding.gyp 将 Cpp 文件编译为 AddLib.node 文件 node-gyp .

@funvill\添加\src\添加.cpp

#include <napi.h>
#include <iostream>

int GetNumber() {
    return 5;
}

// Wrappers for the C++ functions
Napi::Value GetNumberWrapped(const Napi::CallbackInfo &info)
{
    Napi::Env env = info.Env();
    int result = GetNumber();
    return Napi::Number::New(env, result);
}

// Initialization of the addon
Napi::Object Init(Napi::Env env, Napi::Object exports)
{
    // Example
    exports.Set(Napi::String::New(env, "GetNumber"), Napi::Function::New(env, GetNumberWrapped));
    return exports;
}

NODE_API_MODULE(myaddon, Init)

@funvill\添加\绑定.gyp

{
  "targets": [
    {
      "target_name": "AddLib",
      'sources': [ 
        'src/add.cpp',
      ],
      "include_dirs": [
        "<!@(node -p \"require('node-addon-api').include\")",
      ],
      "dependencies": [
        "<!(node -p \"require('node-addon-api').gyp\")"
      ],
      "cflags!": [ "-fno-exceptions" ],
      "cflags_cc!": [ "-fno-exceptions" ],
      "defines": [ "NAPI_DISABLE_CPP_EXCEPTIONS"],
      "libraries": []
    }
  ]
}

接下来,我 在模块中 index.ts index.ts.d

@funvill\添加\src\index.ts

import * as AddLib from "../build/Release/AddLib";
export function GetNumber():number {
  return AddLib.GetNumber();
}

当我构建该项目时出现以下错误

src/index.ts:1:25 - error TS2307: Cannot find module '../build/Release/AddLib' or its corresponding type declarations.

1 import * as AddLib from "../build/Release/AddLib";
                          ~~~~~~~~~~~~~~~~~~~~~~~~~
Found 1 error in src/index.ts:1

我认为(我可能错了)这是因为'../build/Release/'文件夹中的 AddLib.node 文件旁边没有 Typescript 声明文件。

问题1:如何解决此错误?

该模块确实已构建,并且我能够将其安装在其他项目中而不会出现其他错误。

问题 2:在 @funvill\add\src\index.ts ,我需要用 Typescript 函数包装来自原生节点插件的函数,因此它们会使用 Typescript 声明文件导出。这感觉不对。有更好的方法吗?

帖子版权声明 1、本帖标题:如何从 Node Native Addon(C++)生成 Typescript 声明文件 .ts.d
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Zoli Szabó在本站《typescript》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: