简体   繁体   中英

How do I disable: [js] File is a CommonJS module; it may be converted to an ES6 module

The following is what I want to disable:

[js] 文件是一个 CommonJS 模块;它可以转换为 ES6 模块。

I can't find it in settings.
Help appreciated as this is really annoying.

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 .)

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
}

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.

在此处输入图片说明

Add the .vscode file into the project file path. Insert the settings.json file into the .vscode file.

在此处输入图片说明

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

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, eg 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 .

也许你没有“功能(请求,响应)”试试看,它对我有用

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM