Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修复-->;文件是一个公共的JS模块;它可以转换为ES6模块_Javascript_Node.js_Express_Visual Studio Code - Fatal编程技术网

Javascript 如何修复-->;文件是一个公共的JS模块;它可以转换为ES6模块

Javascript 如何修复-->;文件是一个公共的JS模块;它可以转换为ES6模块,javascript,node.js,express,visual-studio-code,Javascript,Node.js,Express,Visual Studio Code,我开始在vs代码编辑器上编写java脚本,当我试图将外部模块包含到我的项目中时,代码编辑器建议-->(文件是一个CommonJS模块;它可能会转换为ES6模块)。。有没有办法用推荐行修复此问题?您可以通过在vscode设置中添加“javascript.suggestionations.enabled”:false来禁用它们 这些是建议/提示。它们直观地表明vscode可以 执行一项可能重构/改进代码的操作,但它们是 不被视为错误。您可以通过添加 “javascript.suggestionAct

我开始在vs代码编辑器上编写java脚本,当我试图将外部模块包含到我的项目中时,代码编辑器建议-->(文件是一个CommonJS模块;它可能会转换为ES6模块)。。有没有办法用推荐行修复此问题?

您可以通过在vscode设置中添加
“javascript.suggestionations.enabled”:false
来禁用它们

这些是建议/提示。它们直观地表明vscode可以 执行一项可能重构/改进代码的操作,但它们是 不被视为错误。您可以通过添加 “javascript.suggestionActions.enabled”:用户设置为false


根据vscode官方报告-

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

对es6模块系统的支持被认为是节点的一个不稳定特性,这基本上意味着社区可以通过引入中断性更改来决定对其进行更改,而不考虑语义版本控制

因此,在为NodeJ选择模块系统时,您基本上有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模块系统

这是一个糟糕的修复,因为它删除了所有建议,而不仅仅是这个特定的建议。很难相信这个问题刚刚结束,但事实确实如此。