neoclide / coc-prettier

Prettier extension for coc.nvim.
MIT License
542 stars 48 forks source link

Fails to find config package (installed from a private registry) #149

Closed joeveiga closed 2 years ago

joeveiga commented 2 years ago

Hi 👋 ! Awesome extension, I use it every day! Unfortunately started working on a new project and I'm running into an issue. Extension fails to find configuration package. As you can see in the screenshot, the @itc/itc-prettier-config package is indeed present in the node_modules/ dir for the project. VSCode extension seems to resolve the config correctly. Also not sure why the error is coming from the prettier version bundled with coc-prettier. Shouldn't it be using my local copy installed in the project? Thanks!

output:///Prettier

["INFO" - 9:36:56 AM] Extension Name: coc-prettier.
["INFO" - 9:36:56 AM] Extension Version: 9.2.3.
["INFO" - 9:37:17 AM] Formatting file:///Users/jveiga/proofpoint/itc-ui-library/projects/components/src/lib/it-aggregate-widget/it-aggregate-widget.component.html
["ERROR" - 9:37:17 AM] Error resolving prettier configuration for /Users/jveiga/proofpoint/itc-ui-library/projects/components/src/lib/it-aggregate-widget/it-aggregate-widget.component.html
["ERROR" - 9:37:17 AM] Cannot find module '@itc/itc-prettier-config' from '/Users/jveiga/proofpoint/itc-ui-library'
Error: Cannot find module '@itc/itc-prettier-config' from '/Users/jveiga/proofpoint/itc-ui-library'
    at Function.resolveSync [as sync] (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/index.js:20992:13)
    at resolve$2 (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/index.js:21127:22)
    at Object.transform (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/index.js:25566:30)
    at run (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/third-party.js:11032:49)
    at async Explorer.search (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/third-party.js:11017:20)
    at async Object.resolveConfigFile (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/index.js:25662:18)
    at async ModuleResolver.getResolvedConfig (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/lib/index.js:3987:28)
    at async PrettierEditService.format (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/lib/index.js:4361:28)
    at async PrettierEditProvider.PrettierEditService.provideEdits (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/lib/index.js:4303:22)
    at async dy.provideDocumentFormattingEdits (/Users/jveiga/.local/share/nvim/plugged/coc.nvim/build/index.js:214:22714)
["INFO" - 9:38:04 AM] Formatting file:///Users/jveiga/proofpoint/itc-ui-library/projects/components/src/lib/it-aggregate-widget/it-aggregate-widget.component.html
["ERROR" - 9:38:04 AM] Error resolving prettier configuration for /Users/jveiga/proofpoint/itc-ui-library/projects/components/src/lib/it-aggregate-widget/it-aggregate-widget.component.html
["ERROR" - 9:38:04 AM] Cannot find module '@itc/itc-prettier-config' from '/Users/jveiga/proofpoint/itc-ui-library'
Error: Cannot find module '@itc/itc-prettier-config' from '/Users/jveiga/proofpoint/itc-ui-library'
    at Function.resolveSync [as sync] (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/index.js:20992:13)
    at resolve$2 (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/index.js:21127:22)
    at Object.transform (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/index.js:25566:30)
    at run (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/third-party.js:11032:49)
    at async Explorer.search (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/third-party.js:11017:20)
    at async Object.resolveConfigFile (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/node_modules/prettier/index.js:25662:18)
    at async ModuleResolver.getResolvedConfig (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/lib/index.js:3987:28)
    at async PrettierEditService.format (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/lib/index.js:4361:28)
    at async PrettierEditProvider.PrettierEditService.provideEdits (/Users/jveiga/.config/coc/extensions/node_modules/coc-prettier/lib/index.js:4303:22)
    at async dy.provideDocumentFormattingEdits (/Users/jveiga/.local/share/nvim/plugged/coc.nvim/build/index.js:214:22714)

vscode output

["INFO" - 10:17:05 AM] Extension Name: esbenp.prettier-vscode.
["INFO" - 10:17:05 AM] Extension Version: 9.3.0.
["INFO" - 10:17:33 AM] Formatting file:///Users/jveiga/proofpoint/itc-ui-library/projects/components/src/lib/it-aggregate-widget/it-aggregate-widget.component.html
["INFO" - 10:17:33 AM] Using config file at '/Users/jveiga/proofpoint/itc-ui-library/package.json'
["INFO" - 10:17:33 AM] Using ignore file (if present) at /Users/jveiga/proofpoint/itc-ui-library/.prettierignore
["INFO" - 10:17:33 AM] File Info:
{
  "ignored": false,
  "inferredParser": "angular"
}
["INFO" - 10:17:33 AM] Detected local configuration (i.e. .prettierrc or .editorconfig), VS Code configuration will not be used
["INFO" - 10:17:33 AM] Prettier Options:
{
  "filepath": "/Users/jveiga/proofpoint/itc-ui-library/projects/components/src/lib/it-aggregate-widget/it-aggregate-widget.component.html",
  "parser": "angular",
  "useTabs": false,
  "tabWidth": 2,
  "printWidth": 140,
  "tslintIntegration": true,
  "singleQuote": true,
  "trailingComma": "es5"
}
["INFO" - 10:17:33 AM] Formatting completed in 0.197ms.

package.json

{
  // ...
  "devDependencies": {
    // ...
    "prettier": "^2.3.1",
    "@itc/itc-prettier-config": "x"
  },
  "prettier": "@itc/itc-prettier-config"
}

coc-settings.json

{
  "coc.preferences.formatOnSaveFiletypes": ["*"],
  "prettier.enable": true,
  "tsserver.disableAutomaticTypeAcquisition": true,
  "angular.enable-strict-mode-prompt": false,
  "angular.view-engine": true
}

image

chemzqm commented 2 years ago

["ERROR" - 9:37:17 AM] Cannot find module '@itc/itc-prettier-config' from '/Users/jveiga/proofpoint/itc-ui-library' Error: Cannot find module '@itc/itc-prettier-config' from '/Users/jveiga/proofpoint/itc-ui-library'

The resolve is performed in your project

joeveiga commented 2 years ago

@chemzqm but as you can see the package is there (node_modules/@itc/itc-prettier-config/). Both vscode prettier extension and running prettier manually works as expected. Is there anything special configuration-wise I need to do for coc-prettier? Thanks.

chemzqm commented 2 years ago

No, should be issue with function https://github.com/neoclide/coc-prettier/blob/master/src/ModuleResolver.ts#L304, but I don't know how to reproduce. Maybe you can provide a sample project.

joeveiga commented 2 years ago

@chemzqm Here is a simple repo where the problem is reproducible: https://github.com/joeveiga/coc-prettier-149 It looks like the issue may be related to the fact that @itc/itc-prettier-config is pulled from a private registry. I included the node_modules (since it's pretty much an empty repo) so you can see the private package without the need to npm install it. I also included another public config package that does work (if I change my config to "prettier": "@azz/prettier-config" everything works as expected!), for reference. They're very similar.

joeveiga commented 2 years ago

Hey @chemzqm. Have you been able to check the repo reproducing the issue?

joeveiga commented 2 years ago

Seems related to this issue already resolved in vscode prettier extension: https://github.com/prettier/prettier-vscode/issues/1289. I bumped coc-prettier's prettier dep to "^2.6.1" (same as latest prettier-vscode) but that didn't solve the issue for me. However, downgrading it to "prettier": "2.0.4" in coc-angular/package.json did solve it! 🤷 . Strange thing is the vscode extension works fine for me with "^2.6.1".

chemzqm commented 2 years ago

You have to add "main": "index.json", in package.json of @itc/itc-prettier-config, otherwise prettier can't resolve it, it's issue with prettier.