如何在 NestJS 应用程序中使用扩展名为 .node 的文件?

How do I use a file with .node extension in NestJS application?

提问人:Abubakar Oluyinka 提问时间:11/17/2023 最后编辑:Abubakar Oluyinka 更新时间:11/17/2023 访问量:22

问:

我正在处理一个在 NodeJS 上的项目,但现在尝试转换为 NestJS,但是有一个本机节点模块,get_dec_data.node,我在应用程序中调用它。我能够创建一个打字稿模块(get_dec_data.d.ts)并使用 .但是当我运行时,我收到以下错误:npm run buildnpm run start:dev

错误:找不到模块“get_dec_data”需要堆栈: C:\Users\User\OneDrive\Desktop\tech5-face-capture\dist\app.service.js C:\Users\User\OneDrive\Desktop\tech5-face-capture\dist\app.controller.js C:\Users\User\OneDrive\Desktop\tech5-face-capture\dist\app.module.js C:\Users\User\OneDrive\Desktop\tech5-face-capture\dist\main.js 在 Function.Module._resolveFilename (node:internal/modules/cjs/loader:1077:15) 在 Function.Module._load (node:internal/modules/cjs/loader:922:27) 在 Module.require (node:internal/modules/cjs/loader:1143:19) 在需要(节点:internal/modules/cjs/helpers:119:18) at 对象。(C:\Users\User\OneDrive\Desktop\tech5-face-capture\src\app.service.ts:2:1) 在 Module._compile (node:internal/modules/cjs/loader:1256:14) 在Object.Module._extensions..js (节点:internal/modules/cjs/loader:1310:10) 在 Module.load (node:internal/modules/cjs/loader:1119:32) 在 Function.Module._load (node:internal/modules/cjs/loader:960:12) 在 Module.require (node:internal/modules/cjs/loader:1143:19)

当我检查 dist 目录时,我意识到 get_dec_data 文件没有被构建。我已经尝试了一切,但仍然没有进展。以下是我的设置:

tsconfig.json文件

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "ES2021",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "skipLibCheck": true,
    "strictNullChecks": false,
    "noImplicitAny": false,
    "strictBindCallApply": false,
    "forceConsistentCasingInFileNames": false,
    "noFallthroughCasesInSwitch": false,
    "types": [
      "node",
      "./src/get_dec_data"
    ]
  }
}

get_dec_data.d.ts

declare module 'get_dec_data' {
  export function get_decode_data(license: string, image: string): any;
}

app.service.ts(应用.service.ts)

async decryptionOfImage(req: any) {}

async getLicenseString() {}

async writeFileBeforeEncryption(req: any) {}

private async createDirectoryIfNotExists(
  directoryPath: string,
): Promise<void> {}

private getDecodeData(license: string, image: string): string {
  try {
    const decodedData = get_decode_data(license, image);
    return decodedData;
  } catch (error) {
    console.error('Decryption error:', error);
    throw new HttpException(
      'Error during decryption',
      HttpStatus.INTERNAL_SERVER_ERROR,
    );
  }
}

这是我的项目结构:enter image description here

需要一些帮助。

JavaScript 节点 .js 打字稿 nestjs

评论

0赞 273K 11/17/2023
为什么标记 C++?
0赞 Abubakar Oluyinka 11/17/2023
get_dec_data.node 文件是从 c++ 程序构建的。我使用node-gyp来构建文件。

答: 暂无答案