如何禁用: [ js ] File 是 CommonJS 模块; 它可以转换为 ES6模块

下面是我想禁用的内容:

[js] File is a CommonJS module; it may be converted to an ES6 module.

我在设置里找不到。
感谢你的帮助,因为这真的很烦人。

76498 次浏览

This is a new feature added in Visual Studio Code called "Suggestion Code Actions". "Suggestion Code Actions" are enabled by default in JavaScript and TypeScript.

You can disable them by setting: "typescript.suggestionActions.enabled": false or "javascript.suggestionActions.enabled": false in your user/workspace settings. The documentation can be found here.

(Image provided by Yusuf Yaşar.)

Actually this annoying suggestion comes from TypeScript.

Thus, to turn off this suggestion, you can modify the source code of TypeScript, compile it, then tell vscode to use your fork of TypeScript.

As a quick and dirty hack, just remove the logic related to ts.Diagnostics.File_is_a_CommonJS_module_it_may_be_converted_to_an_ES6_module, then compile the project following the instructions on TypeScript's README.

The compilation will fail because removing the related logic causes some functions become unused, then you just remove those unused function definitions and recompile the project (gulp clean && gulp local).

After you successfully compile your fork of TypeScript, then change your user settings.json to point to your vscode fork:

"typescript.tsdk": "/path/to/your/fork/of/TypeScript/built/local",

Done.

Restart your vscode, and the annoying suggestion has gone.

You can check this commit to see which source files of TypeScript need to be modify.

Warn: the modification is quick and dirty, use them at your own risk. If you find anything wrong, you can just remove the tsdk configuration, to switch back to vscode's built-in TypeScript.

Alert! This approach might be too much for VSCode users who love the intelligent coding assistance. Use it as a simple & quick help, together with other linting & testing utilities.


The control of the presence of the said message is located in Settings => Extensions => TypeScript. (TypeScript !!! :P)

As shown in screenshot, I searched in Settings with keyword "validate", then click TypeScript. It's the first item.

enter image description here

For anyone using Vim with coc.nvim, you can make the same change by adding the same in the :CocConfig object:

"javascript.suggestionActions.enabled": false

If you haven't added any settings to :CocConfig before, then you need to make sure the above setting is wrapped in a JSON object:

{
"javascript.suggestionActions.enabled": false
}

Maybe you don't have function(request, response), try it. It works for me

For anyone using Neovim with Native LSP and nvim-lspconfig for setting up your language servers, you can disable suggestions by adding this somewhere in your tsserver setup:

require('lspconfig').tsserver.setup({
init_options = {
preferences = {
disableSuggestions = true,
},
},
})

You can also use the nvim-lsp-ts-utils plugin to filter out this specific diagnostic message while keeping suggestions enabled by adding this somewhere in your tsserver setup:

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,
})

If you are getting this error in Next js, try the code below.

  1. Next.js includes the "next/babel" preset to your app, which includes everything needed to compile React applications and server-side code.

  2. Open your .eslintrc.json

    { "extends" : "next/babel" }
    
  3. But if you want to extend the default Babel configs, it's also possible. https://nextjs.org/docs/advanced-features/customizing-babel-config

If your project is "type": "module" and you need to have a CommonJS file in it, e.g. to configure ESLint (which doesn't support ESM as of writing this), then just rename it from *.js to *.cjs (or from *.ts to *.cts, if appropriate), and the suggestion will go away. The fix for this has shipped with TypeScript 4.5.1 about a year ago.