如何禁用:[js] 文件是 CommonJS 模块;它可以转换为 ES6 模块
Posted
技术标签:
【中文标题】如何禁用:[js] 文件是 CommonJS 模块;它可以转换为 ES6 模块【英文标题】:How do I disable: [js] File is a CommonJS module; it may be converted to an ES6 module 【发布时间】:2018-09-10 00:00:26 【问题描述】:以下是我要禁用的:
我在设置中找不到它。 帮助表示赞赏,因为这真的很烦人。
【问题讨论】:
【参考方案1】:这是 Visual Studio Code 中添加的一项新功能,称为“建议代码操作”。 javascript 和 TypeScript 中默认启用“建议代码操作”。
您可以通过在用户/工作区设置中设置:"typescript.suggestionActions.enabled": false
或 "javascript.suggestionActions.enabled": false
来禁用它们。可以在here找到文档。
(图片由Yusuf Yaşar提供。)
【讨论】:
有没有办法只关闭这个警告而不是所有的建议? 是的,这行得通,谢谢,不过最好只关闭该警告。 上面链接的主题以“我不明白为什么关闭。问题存在”和“我已锁定此问题,因为 +1 cmets 导致人们错过了已经存在禁用这些提示的解决方案。”。我不知道微软出了什么问题,也不知道他们为什么故意忽略承认存在问题。 在那个线程中没有人问如何关闭建议只关闭 nodejs 文件的 es6 导入建议,eslint 你定义了你想要的模块但它无法读取 eslint 配置? 遗憾的是,到 2020 年底这似乎仍然是一个问题【参考方案2】:对于将 Vim 与 coc.nvim 一起使用的任何人,您可以通过在 :CocConfig
对象中添加相同的内容来进行相同的更改:
"javascript.suggestionActions.enabled": false
如果您之前没有向:CocConfig
添加任何设置,那么您需要确保将上述设置包装在 JSON 对象中:
"javascript.suggestionActions.enabled": false
【讨论】:
是的!谢谢兄弟。 这不会停止所有与 JS 相关的建议吗? @ParsaNoori 是的,它确实如此,不幸的是没有更精确的方法 - 请参阅comments in the accepted answer【参考方案3】:警告!对于喜欢智能编码辅助的 VSCode 用户来说,这种方法可能太过分了。将其与其他 linting 和测试实用程序一起用作简单快捷的帮助。
所述消息的存在控制位于Settings => Extensions => TypeScript
。 (TypeScript !!! :P)
如截图所示,我在设置中搜索关键字“验证”,然后单击 TypeScript。这是第一项。
【讨论】:
这将禁用 javascript 的 所有验证。有点像“把婴儿和洗澡水一起扔出去”的情况。【参考方案4】:其实这个烦人的建议来自 TypeScript。
因此,要关闭这个建议,你可以修改 TypeScript 的源代码,编译它,然后告诉 vscode 使用你的 TypeScript 分支。
作为一种快速而肮脏的 hack,只需删除与 ts.Diagnostics.File_is_a_CommonJS_module_it_may_be_converted_to_an_ES6_module
相关的逻辑,然后按照 TypeScript 的 README 中的说明编译项目。
编译会失败,因为删除相关逻辑会导致一些函数没有被使用,那么你只需删除那些未使用的函数定义并重新编译项目(gulp clean && gulp local
)。
在你成功编译你的 TypeScript 分支之后,然后将你的用户 settings.json 更改为指向你的 vscode 分支:
"typescript.tsdk": "/path/to/your/fork/of/TypeScript/built/local",
完成。
重启你的 vscode,烦人的提示就消失了。
你可以查看this commit,看看哪些TypeScript源文件需要修改。
警告:修改快速且肮脏,使用它们需要您自担风险。如果你发现有什么问题,你可以删除 tsdk 配置,切换回 vscode 内置的 TypeScript。
【讨论】:
太繁琐了,怎么升级? @Run 要升级,只需拉取 typescript 存储库并再次重复该过程。但这是一个过时的答案。最新版本的 TypeScript 仍未解决此问题?【参考方案5】:对于使用 Neovim 和 Native LSP 和 nvim-lspconfig 设置语言服务器的任何人,您可以通过在 tsserver 设置中的某处添加以下内容来禁用建议:
require('lspconfig').tsserver.setup(
init_options =
preferences =
disableSuggestions = true,
,
,
)
您还可以使用nvim-lsp-ts-utils 插件过滤掉这个特定的诊断消息,同时通过在您的 tsserver 设置中添加它来保持启用建议:
require('lspconfig').tsserver.setup(
on_attach = function(client, bufnr)
require('nvim-lsp-ts-utils').setup(
filter_out_diagnostics_by_code = 80001 ,
)
require('nvim-lsp-ts-utils').setup_client(client)
end,
)
【讨论】:
我遵循了这个,但它对我不起作用:/ 我已经将此信息与官方 Lsp 文档和 typescript-language-server 文档进行了对比,这似乎是正确的。但是消息不断出现,不知道为什么。 确保您没有在 tsserver 上多次调用 setup。您需要在现有的 setup 调用中添加 init_options 块。 谢谢我再次检查,问题是我在第二次调用中覆盖了 on_attach 属性。删除它,消息就消失了。【参考方案6】:如果您在 Next js 中遇到此错误,请尝试以下代码。
Next.js 包含“next/babel”预设到您的应用程序,其中包括编译 React 应用程序和服务器端代码所需的一切。
打开你的 .eslintrc.json
"extends" : "next/babel"
但是如果你想扩展默认的 Babel 配置,也是可以的。 https://nextjs.org/docs/advanced-features/customizing-babel-config
【讨论】:
【参考方案7】:也许你没有function(request, response)
,
试试吧。它对我有用
【讨论】:
请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。以上是关于如何禁用:[js] 文件是 CommonJS 模块;它可以转换为 ES6 模块的主要内容,如果未能解决你的问题,请参考以下文章
JS模块化:CommonJS和AMD(Require.js)
前端工程化4:如何去做js模块化开发?ES Modules/CommonJS有什么区别?