如何在es6模块中使用本机编译的节点模块?

jrcvhitl  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(367)

如果您正在编写一个es6模块以在nodejs中运行,您将如何做 import 另一个包含本机编译代码的模块?
例如,如果我设置 "type": "module" 在里面 package.json ,做一个 npm install talib 然后尝试运行以下命令:

import talib from 'talib';

我在节点v16.2.0中遇到此错误:

node:internal/process/esm_loader:74
    internalBinding('errors').triggerUncaughtException(
                              ^

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".node" for node_modules/talib/build/Release/talib.node
    at new NodeError (node:internal/errors:363:5)
    at Loader.defaultGetFormat [as _getFormat] (node:internal/modules/esm/get_format:71:15)
    at Loader.getFormat (node:internal/modules/esm/loader:105:42)
    at Loader.getModuleJob (node:internal/modules/esm/loader:243:31)
    at async ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:75:21)
    at async Promise.all (index 0)
    at async link (node:internal/modules/esm/module_job:80:9) {
  code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
``` `talib` 这是一个例子,但还有许多其他例子,它们都表现出相同的行为。他们似乎都在使用 `node-gyp` 建造。
您如何在自己的es6模块代码中使用这些模块?这些模块是什么样的 `talib` 朋友需要改变吗?如果是,应该更改什么?它是否向后兼容?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题