微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 ES6 模块中使用本地编译的 Node 模块?

如何解决如何在 ES6 模块中使用本地编译的 Node 模块?

如果您正在编写要在 NodeJS 中运行的 ES6 模块,您如何import一个包含本机编译代码的模块?

例如,如果我在 "type": "module" 中设置了 package.json,请执行 npm install talib 然后尝试运行:

import talib from 'talib';

我在 Node 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 和朋友之类的模块是否需要更改?如果是,应该改变什么,是否向后兼容?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。