【问题标题】:how can i fix --> File is a CommonJS module; it may be converted to an ES6 module我该如何解决 --> File 是一个 CommonJS 模块;它可以转换为 ES6 模块
【发布时间】:2020-05-01 09:50:37
【问题描述】:

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

【问题讨论】:

    标签: javascript node.js express visual-studio-code


    【解决方案1】:

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

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

    所以,在为 nodejs 选择模块系统时,您基本上有 3 个选择:

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

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

    这意味着,现在,您可以放心地忽略 VS 代码中的警告。 VS 代码提示您切换到 es6 模块,因为它们被设计为 javascript 的通用模块系统,但是您可以想象,采用过程需要时间来完成。

    实际上还有第四种选择,但它需要你采用 typescript(顺便说一下,对于大中型项目来说,这是一个不错的选择):用 typescript 编写你的源代码,然后让 typescript 编译器转译它回到与节点兼容的 JavaScript 代码。

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

    【讨论】:

      猜你喜欢
      • 2018-09-10
      • 1970-01-01
      • 2019-11-19
      • 2012-12-18
      • 1970-01-01
      • 2015-04-05
      • 2018-04-13
      • 2017-07-08
      • 2017-06-21
      相关资源
      最近更新 更多