我该如何修复 --> 文件是一个 CommonJS 模块;它可以转换为 ES6 模块

Nan*_*thu 3 javascript node.js express visual-studio-code

我盯着 vs 代码编辑器上的 java 脚本编码,当我试图将外部模块包含到我的项目中时,代码编辑器建议这个 -->(文件是一个 CommonJS 模块;它可能被转换为一个 ES6 模块。)。有什么办法可以用推荐行解决这个问题吗?我的代码

Enr*_*one 6

目前nodejs内部唯一稳定支持的模块系统是commonjs,它是基于require函数和module全局对象的模块系统。

对 es6 模块系统的支持被认为是 node 的一个不稳定特性,这基本上意味着社区可以决定通过引入破坏性更改来改变它,而不考虑语义版本控制。

因此,在为 nodejs 选择模块系统时,您基本上有 3 种选择:

  • 坚持使用 commonjs 模块并等待 es6 模块支持成为稳定功能
  • 将当前支持的不稳定 api 用于 es6 模块
  • 在您的代码中使用 es6 模块,然后使用 babel 转译回 commonjs 模块,以便节点可以仅使用稳定的 api 来运行转译后的代码

在我看来,最简单有效的选择就是坚持使用commonjs,等待es6模块支持成为稳定的api。此时,您可以安全地切换到 es6 模块。我会通过设置 babel 和构建过程来将 es6 模块转换为 commonjs 模块来避免增加复杂性。

这意味着,现在,您可以安全地忽略 VS 代码中的该警告。VS Code 正在暗示您切换到 es6 模块,因为它们被设计为 javascript 的通用模块系统,但正如您想象的那样,采用过程需要时间才能完成。

实际上还有第四种选择,但它要求您采用 typescript(顺便说一句,这是中大型项目的一个不错选择):使用 typescript 编写源代码,然后让 typescript 编译器将其转译回 node - 兼容的 javascript 代码。

Typescript 开箱即用地使用 es6 模块系统,因此通过采用 typescript,您将从一开始就使用 es6 模块系统。