21

I have no clue what's going on,

I cloned a github repo and literally just tried to change like one line but I got hit by this prettier error which makes no sense to me (I've never used prettier).

Replace ↹return·(⏎↹↹<img·alt='logo'·src='./Logo.png'·/>⏎↹); with ··return·<img·alt="logo"·src="./Logo.png"·/> prettier/prettier

Anything could be helpful at this point, I'm using MacOS and working on VSCode

Pepe
  • 355
  • 1
  • 4
  • 11
  • 2
    Looks like it just wants you to fix the non-standard whitespace issues, tabs or whatever into spaces, and also remove the unnecessary parentheses. – Drew Reese May 26 '21 at 09:32
  • 2
    @DrewReese is there a way to just disable it? I don't really need all this perfection right now – Pepe May 26 '21 at 09:38
  • 2
    Sure, search in the VSCode settings (cmd + shift + P), or more likely, look for a `.prettierrc.json` (or similar) file in the root of the project. Probably about as much effort to search the settings and enable the format on save. – Drew Reese May 26 '21 at 09:41
  • @DrewReese I'm sorry but I really can't do it, I disable it from the setting and it keeps going, I tried from the .prettierrc.json but it keep going, it just keep giving me errors for formatting stuff (Not that I can't fix them, I just want to be free from this cancer of prettier) – Pepe May 26 '21 at 10:38
  • Can you do a global search (cmd + shift + f) for "prettier" and see what results you have, there may be some some settings your eslint configs. Can you update your question to include your `.prettierrc.json` and `eslintrc.json` configuration files if available? – Drew Reese May 26 '21 at 15:46
  • Prettier has a lot of conflicts with eslint. – SalahAdDin May 19 '22 at 21:14

12 Answers12

16

Let's see why we are getting this error.

  1. If you have installed the prettier extension in your VSCode then the default values are set as mentioned here which can be seen by searching prettier in the settings of VSCode as well.

  2. Now if you have enabled formatOnSave in your VSCode the prettier formats your code based on configs from the VSCode.

  3. This error would occur when the configs from the VSCode conflicts from the configs mentioned in .prettierrc.json or .eslintrc.json.

    enter image description here

Ex: Let's say your project is using a printWidth of 100 but the default printWidth is 80. ( Search prettier printwidth in VSCode settings )

In general the spacing errors will be autoCleared ( autoFormatted ) on save by prettier. But in this case that won't work.

Reason: Prettier is sticking to the config ( printWidth: 80 ) which is an error according to Repo's eslintrc/ prettierrc ( printWidth: 100 )

Fix here

  1. Change default VSCode Prettier configs. ❌ -> This would be a bad idea as it will effect all your projects opened in VSCode.

  2. Better way to fix this issue is by adding a .vscode/settings.json in the root directory of the repo.

  3. Add these lines in the settings.json

    {
      "editor.codeActionsOnSave": { "source.fixAll": true },
      "editor.formatOnSave": false,
    } 
    
  4. Now go to files with errors and save the files to format. Files will be formatted according to the configs mentioned in project's eslintrc/ prettierrc

  5. Instead of going to each file you can fix all autofixable problems from the command line as below.

  6. Go to package.json and add this line to your scripts.

    "lint-fix": "eslint --fix 'src/**/*.{js,jsx,ts,tsx,json,css,scss,md}'",

  7. Now in the terminal run npm run lint-fix.

cottontail
  • 10,268
  • 18
  • 50
  • 51
Anjan Talatam
  • 2,212
  • 1
  • 12
  • 26
  • Thanks! It worked for me. I understand the difference between codeActionsOnSave and formatOnSave as explained in 'https://stackoverflow.com/questions/60718493/difference-between-codeactionsonsave-and-formatonsave-in-vs-code'. – taoliujun Feb 27 '23 at 03:44
10

I had the same issue, in the eslinrc.json file under "prettier/prettier", I removed printWidth.

4

This is usually due to some configuration with eslint preventing you from making errors and introducing unwanted characters in your code. I fixed this by running one line eslint --fix . . Make sure you install eslint globally first npm i -g eslint .

cottontail
  • 10,268
  • 18
  • 50
  • 51
Tony Marfo O
  • 184
  • 1
  • 2
4

You can just set/update this rule in your .eslintrc.js

rules: {
  ...,
  'prettier/prettier': ['error', { printWidth: 120 }],
}

By default, printWidth is 80. ESLint wants to break down the line to match this length requirement that can be overwitten.

Calhau
  • 129
  • 1
  • 5
2

I think this is caused by Prettier being configured to use spaces instead of tabs to indent and then your code editor using tabs. So Prettier wants you to replace those tabs with spaces.

Alternatively, you can set your code editor to use tabs.

What worked for me was adding this to the rules object in .prettierrc:

{
  "useTabs": false
}
0

I had the same issue, I changed the tab width inside the prettier formatter extension to the configured size.

tomstan11
  • 1,047
  • 7
  • 9
0

I added in the .prettierc props "endOfline".

{
  "endOfLine": "lf",
}

By default Windows uses CRLF line separator, so you can cahnge it through a global config of IDE to use LF instad of CRLF

0

I figured the formatting issue (VS Code):

  1. settings.json:

    "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "editor.defaultFormatter": "dbaeumer.vscode-eslint", "editor.formatOnSave": true

  2. .eslintrc.json: "useTabs": false}

  3. .editorconfig: indent_style = space

  4. if esbenp.prettier-vscode is enabled in VSCode - please disable it.

See my complete eslint + prettier setup for this repo: https://github.com/Sgryts/ng2-feature-toggle

Sgryt
  • 290
  • 3
  • 13
0

In my case eslint was preventing Prettier to format the file while saving (I have set my VSCode to format the document upon saving).

Due that, Prettier was complaining about tabs / spaces being added when it was not required.

To fix I had to first fix eslint by using the below command(make sure to install the package globally):

eslint --fix

and then I had to Save the files again so Prettier could format them correctly.

0

Select all, right click, and select format selection

General Grievance
  • 4,555
  • 31
  • 31
  • 45
0

Try using the following settings:

.editorconfig file

indent_style = tab
indent_size = 2

.pretteierrc file

"tabWidth": 2

Note: reopen vscode after updating this setting. Also if you have .eslintrc file, make sure that prettier is included in the extends array like this:

"extends": ["standard",..,"prettier"]
manojadams
  • 2,314
  • 3
  • 26
  • 30
-1

For me I had to remove

"extends": "eslint:recommended", 

from the .eslintrc.js file in the project.

jakobinn
  • 1,832
  • 1
  • 20
  • 20