【问题标题】:Import and Require ES Module Incompability导入和要求 ES 模块不兼容
【发布时间】:2022-01-26 09:48:09
【问题描述】:

我安装了两个 npm 包。

一个要求我使用

var langs = require('langs');

另一个是

从“法郎”进口{法郎};

但是我收到一个错误,说 ES 模块不支持 require。

我尝试使用 - import { langs } from "langs";但由于某种原因它不起作用。

是我导入的方式不对还是其他包无法导入而只需要?

另外,ES 模块是什么意思? 这是我找到的定义:模块是包含一个或多个例程的软件组件或程序的一部分。

这就像 Javascript 中的另一种语言?

【问题讨论】:

  • 你试过从'langs'导入语言吗?没有括号?

标签: javascript node.js npm-install


【解决方案1】:

自 Node v12(2019 年 4 月)起,默认启用对 ES 模块的支持,自 Node v15(2020 年 10 月)起,它是稳定的(参见此处)。包含节点模块的文件必须以 .mjs 结尾,或者最近的 package.json 文件必须包含 "type": "module"。 Node 文档有大量信息,还有关于 CommonJS 和 ES 模块之间的互操作。

在性能方面,新功能总有可能不如现有功能优化得好。然而,由于模块文件只评估一次,性能方面可能会被忽略。最后,你必须运行基准测试才能得到明确的答案。

ES 模块可以通过 import() 函数动态加载。与 required 不同,这会返回一个 Promise。

package.json 的样子

【讨论】:

  • 你必须找到这两个模块的替代品,否则你可以通过在整个项目中声明类型模块来使用导入所有包
【解决方案2】:
import langs from 'langs'

你可以试试这个吗?

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 2021-10-30
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2016-12-01
    • 2021-10-13
    相关资源
    最近更新 更多