'Turning off misidentified "Experimental decorators" linting errors in cshtml/Razor template files (VSCode)

I have a legacy system that uses Razor templating.

When I open *.cshtml files in VSCode, I get linting errors reported in VSCode even though it's ultimately valid JavaScript.

Here's an easy example: Whatever linter it is complains I'm using "experimental decorators". I'm not.

Experimental support for decorators is a feature that is subject to change in a future release. 
Set the 'experimentalDecorators' option in your 'tsconfig' or 'jsconfig' to remove this warning.`

It's a Razor comment, which is completely legit here:
@* If MathJax wasn't successfully loaded from cdn1, use the second: *@

Error in VSCode on a Razor comment surrounded by @s

I have eslint installed. I use that to lint "real" JavaScript files. That, with the VSCode eslint extension, works perfectly. And I don't mind having JavaScript linting in html, but whatever's running doesn't seem to be eslint.

I tried essentially following the instructions in the error & creating a jsconfig.json file with an ignore in it, but this did not seem to work either.

{
    "compilerOptions": {
        "target": "es6"
    },
    "exclude": ["**/*.cshtml"]
}

Perhaps I borked the glob? (I tried a few -- just *.cshtml, ./**/*.cshtml).

At any rate, I have no idea what's doing this linting. I searched my settings file (in raw JSON) for javascript and js and didn't find an obvious culprit there.

What linter is this? How do I make it cshtml aware? Or how do I turn linting off for *cshtml (and in this way, at least, my question is different than this question) completely?



Solution 1:[1]

Answering my own question for now with a workaround/less than perfect solution...

Looks like the setting to kill it is:

"html.validate.scripts": false,

I would still prefer to have scripts validated in a Razor template-aware way.


How to edit settings directly

Add this text to settings by...

  1. Typing ctrl-p (cmd-p on macOS),
  2. Typing JSON, and
  3. Selecting Preferences: Open Settings (JSON).

open JSON settings in ctrl-p shown

  1. Paste the snippet into the file that was opened.

Note: These reported errors may have been complicated by my mapping *.cshtml to *.html for it to otherwise be treated as html:

  "files.associations": {
    "*.cshtml": "html"
  },

I have not yet tried removing that mapping to see if the script validation would continue.


Hat-tip

Hat-tip to this answer, which mentioned:

You can disable JavaScript build-in validation with "javascript.validate.enable": false in settings.json and then enable either ESLint or JSHint extensions to fine-tune errors and validations.

Just needed to edit that to its html equivalent.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 ruffin