Node.js: 如何在 C++ 中创建 ES6 模块

Node.js: How to create ES6 module in C++

这是在 C++ 中创建 Node.js 插件的旧示例:
https://nodejs.org/api/addons.html

可以用node-gyp构建成一个普通的JS模块,配合function 'require'使用效果很好。但是编译后的模块无法在.mjs文件中导入。

这很好用:node test.js

// test.js
var m = require("./build/Release/addon");
console.log(m.hello());

这不是:node --experimental-modules test.mjs

// test.mjs
import * as m from "./build/Release/addon";
console.log(m.hello());

错误是:Error [ERR_MODULE_NOT_FOUND]: Cannot find module

那个 C++ 插件示例页面是针对旧 Node.js 和普通 JS 的,是否有任何 C++ 插件示例可以构建为 ES6 模块以导入 .mjs 文件?

节点does not currently support loading native modules with import syntax.

在 ESM 文件中,您需要执行以下操作:

import { createRequire } from 'module';
const require = createRequire(import.meta.url);

const m = require('./build/Release/addon');
console.log(m.hello());