【问题标题】:How can i do npm module support import and require?我如何做 npm 模块支持导入和要求?
【发布时间】:2022-05-05 05:27:11
【问题描述】:

我用 Javascript 将我的第一个模块上传到 npm,我希望它支持 import 和 require。这可能吗?

模块是这样的: https://www.npmjs.com/package/@dariodigulio/pro-log-js

【问题讨论】:

  • 我的模块是用模块 sintax 编写的。但是,当我尝试使用 require 导入时,在控制台中打印此错误 internal/modules/cjs/loader.js:1025 throw new ERR_REQUIRE_ESM(filename); ^ 错误 [ERR_REQUIRE_ESM]: 必须使用导入来加载 ES 模块:D:\Desktop\test-pro-
  • 根据我有限的经验,你可以 import 一个 commonjs 模块 - 但你不能 require 一个 ESM 模块 - 所以,在我需要两者的情况下 - 我将代码编写为commonjs,并提供了一个导出 ESM 模块文件来导入 commonjs 并导出它——当然,如果你真的想坚持使用 ESM 语法,你可以编写 ESM,然后使用某种“转译器”将其转换为 commonjs 和发布...

标签: javascript node.js npm node-modules


【解决方案1】:

是的,当我尝试require() 你的包裹时,我得到了同样的错误。但是,然后我设法通过将您的包代码转换为 commonjs 兼容来使两者都能正常工作(import...fromrequire())。

您应该尝试将包发布为 commonjs (require()) 模块,然后您将从 Node 中 get support 选择应用程序端的任一语法。

我对您的代码进行了以下更改,以使两种语法都能正常工作。

  1. package.json 中删除了"type": "module"
  2. main 条目从“main”:“ProLog.mjs”更新为"main": "ProLog.js"
  3. ProLog.js 文件中的import...from 语法替换为require()
  4. export class ProLog 更新为module.exports = ProLog

【讨论】:

    猜你喜欢
    • 2022-01-26
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 2020-05-29
    • 2017-01-31
    • 2018-05-30
    • 2019-05-01
    • 1970-01-01
    相关资源
    最近更新 更多