javascript - 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++ 插件示例?
解决方案
Node目前不支持使用import
语法加载本机模块。
在 ESM 文件中,您需要执行以下操作:
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const m = require('./build/Release/addon');
console.log(m.hello());
推荐阅读
- django - Dockerize django 应用程序以及黄瓜测试
- mongodb - Mongodb 建议我创建 collection.sessions 索引?
- php - file_get_contents HTTP 请求失败错误
- jira - Jira JQL 运算符和 + 和 + 和
- html - 如何使徽标的可点击区域与导航栏的徽标大小相同?
- python - 给出字符串输入并将它们存储在一个列表中,没有数量限制
- docker - 如何连续将文件复制到docker
- html - Bootstrap Modal 搞砸了 Carousel CSS
- python - 带有 skbio 的二维 PCoA 图
- google-chrome - Chrome 扩展程序不同步