凯凯本凯 2023-05-24 23:22 采纳率: 72.5%
浏览 11

Node.js 使用 ESM 规范如何导入 C++ Addons

使用 import 语法时:

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".node"

使用 require 语法时:

ReferenceError: require is not defined in ES module scope, you can use import instead
  • 写回答

2条回答 默认 最新

  • 北海屿鹿 2023-05-25 14:23
    关注

    在使用ESM规范导入C++ Addons时,需要注意以下几点:

    1、首先需要在Node.js中启用ESM模块,可以在命令行中使用--experimental-modules选项启用ESM模块,例如:

    node --experimental-modules app.mjs
    

    或者在package.json中添加"type": "module"字段,表示使用ESM模块,例如:

    {
      "type": "module",
      "main": "app.mjs"
    }
    

    2、在ESM模块中,不能使用require语法导入C++ Addons,需要使用import语法导入。例如:

    import addon from './addon.node';
    

    这里的./addon.node是C++ Addons编译生成的二进制文件,需要注意路径是否正确。
    3、如果在使用import语法时出现TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".node"错误,可以尝试在package.json中添加"exports"字段,指定.node文件的导入方式。例如:

    {
      "type": "module",
      "main": "app.mjs",
      "exports": {
        ".": {
          "require": "./addon.node"
        }
      }
    }
    
    

    这里的"./addon.node"是C++ Addons编译生成的二进制文件路径,需要根据实际情况修改。

    需要注意的是,ESM规范在Node.js中仍处于实验性阶段,可能存在一些不稳定性和兼容性问题,建议谨慎使用。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月24日

悬赏问题

  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络