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

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

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

最佳答案

目前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 code 中的警告。VS code 提示您切换到 es6 模块,因为它们被设计为 javascript 的通用模块系统,但是正如您想象的那样,采用过程需要时间才能完成。

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

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

关于javascript - 我该如何修复 --> 文件是 CommonJS 模块;它可以转换为 ES6 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61540198/

相关文章:

mysql - 将 'crypto'模块生成的哈希值保存到mysql

node.js - 使用 Node http代理转发http代理

javascript - 发布到本地 API 时无法读取未定义的属性 'id'

node.js - 快速安装错误

javascript - 上传图像而不在 Express 中重定向 :(

javascript - 使用 `node` 启动 Node 应用程序可以工作,但使用 `/usr/bin/node` 启动它时则不行

javascript - Google map API 不使用区域提示

javascript - 模型创建新行而不是进行编辑

javascript - 什么是 'xmlhttp.setRequestHeader();' 以及它在哪些情况下使用?

node.js - 尝试在 Webstorm 中将 app.js 转换为 Typescript