How to fix JSX is not allowed in files with extension.

When setting up your ESlint rules, we can run into situations where a predefined rule is not suitable for your project.  Airbnb is an industry leader when it comes to JavaScript style guides.

As a result, many choose to use their eslint configuration rules. This a great resource and is used in many projects. However, you might have come across the error in your terminal stating:

error JSX not allowed in files with extension ‘.js’ react/jsx-filename-extension

This is a preference by Airbnb and makes sense as files with the .jsx  extension typically contain JSX markup. To solve, change your files contains JSX to extension .jsx.

On the other hand, if you don’t care about restricting file extensions that may contain JSX you can disable it. Navigate to your .eslintrc configuration file and disable react/jsx-filename-extension:

"rules": {
  "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
}

Predefined configuration rules help keep your project styled and clean. But don’t forget that you are always in control of what individual linting rules are applied. So toggle them on or off as you see fit.

Gareth Dunne

Senior JavaScript Engineer and creator of JSdiaries. Passionate about the latest in web technologies and how it can provide value for my clients.