javascript - Node.js:如何用 C++ 创建 ES6 模块

标签 javascript c++ node.js ecmascript-6 module

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

它可以使用 node-gyp 构建为通用 JS 模块,与函数“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());

错误是:错误 [ERR_MODULE_NOT_FOUND]:找不到模块

该 C++ 插件示例页面适用于具有常见 JS 的旧 Node.js,有任何可以构建为 ES6 模块以导入 .mjs 文件的 C++ 插件示例吗?

最佳答案

Node 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());

关于javascript - Node.js:如何用 C++ 创建 ES6 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68006615/

相关文章:

javascript - 开 Jest toMatchObject 会抛出 TypeError

javascript - 温泉如何在项目上进行部分滑动

c++ - 无法解析未声明的标识符 C++

c++ - operator<< 函数的返回值

javascript - app.use() 在 express/connect 中的使用

javascript - 使用 npm start 启动服务器时出错

javascript - jquery 获取数组中的一个对象作为数组

javascript - webgl 中的内部计数器?

javascript - 根据 URL 动态加载 HTML

c++ - C2365 和 C2063 类错误