首页 > 解决方案 > Node.js:如何在 C++ 中创建 ES6 模块

问题描述

这是在 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());

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

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

标签: javascriptc++node.jsecmascript-6module

解决方案


Node目前不支持使用import语法加载本机模块。

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

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

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

推荐阅读