IanVS / prettier-plugin-sort-imports

An opinionated but flexible prettier plugin to sort import statements
Apache License 2.0
951 stars 21 forks source link

Error formatting document: Cannot read properties of undefined (reading 'buildError') #120

Closed GiancarlosIO closed 12 months ago

GiancarlosIO commented 12 months ago

Your Environment

Describe the bug

There is an error:

PluginSortError.tsx: TypeError: Cannot read properties of undefined (reading 'buildError')

when trying to format this file.

The thing is that If I change this import from:

import { Card } from '../../types';

To:

import { type Card } from '../../types';

then Prettier works without any problem 🤔

To Reproduce

  1. git clone https://github.com/GiancarlosIO/vscode-prettier-bug.git
  2. git checkout plugin-sort-bug
  3. run pnpm install
  4. run pnpm format
  5. A error is shown 😢

Expected behavior

It should format without errors

Screenshots, code sample, etc

Configuration File (cat .prettierrc, prettier.config.js, .prettier.js)

Error log

Error from prettier cli:

❯ pnpm format

> prettier-bug-vscode@1.0.0 format /Users/persoanl/Documents/my-app/prettier-bug-vscode
> prettier "./**/*.{ts,tsx,js,mjs,json,md,css}" --write

.vscode/settings.json 21ms
package.json 2ms
PluginSortError.tsx
[error] PluginSortError.tsx: TypeError: Cannot read properties of undefined (reading 'buildError')
[error]     at Scope.checkBlockScopedCollisions (/Users/persoanl/Documents/my-app/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/scope/index.js:399:22)
[error]     at Scope.registerBinding (/Users/persoanl/Documents/my-app/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/scope/index.js:535:16)
[error]     at Scope.registerDeclaration (/Users/persoanl/Documents/my-app/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/scope/index.js:487:14)
[error]     at Object.BlockScoped (/Users/persoanl/Documents/my-app/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/scope/index.js:254:12)
[error]     at Object.newFn (/Users/persoanl/Documents/my-app/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/visitors.js:192:17)
[error]     at NodePath._call (/Users/persoanl/Documents/my-app/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/path/context.js:46:20)
[error]     at NodePath.call (/Users/persoanl/Documents/my-app/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/path/context.js:32:14)
[error]     at NodePath.visit (/Users/persoanl/Documents/my-app/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/path/context.js:82:31)
[error]     at TraversalContext.visitQueue (/Users/persoanl/Documents/my-app/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/context.js:86:16)
[error]     at TraversalContext.visitMultiple (/Users/persoanl/Documents/my-app/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/context.js:61:17)
prettier.config.js 12ms
README.md 28ms

Error from vscode prettier extension

["ERROR" - 5:00:52 PM] Error formatting document.
["ERROR" - 5:00:52 PM] Cannot read properties of undefined (reading 'buildError')
TypeError: Cannot read properties of undefined (reading 'buildError')
    at Scope.checkBlockScopedCollisions (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/scope/index.js:399:22)
    at Scope.registerBinding (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/scope/index.js:535:16)
    at Scope.registerDeclaration (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/scope/index.js:487:14)
    at Object.BlockScoped (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/scope/index.js:254:12)
    at Object.newFn (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/visitors.js:192:17)
    at NodePath._call (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/path/context.js:46:20)
    at NodePath.call (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/path/context.js:32:14)
    at NodePath.visit (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/path/context.js:82:31)
    at TraversalContext.visitQueue (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/context.js:86:16)
    at TraversalContext.visitMultiple (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/context.js:61:17)
    at TraversalContext.visit (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/context.js:107:19)
    at traverseNode (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/traverse-node.js:22:17)
    at traverse (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/index.js:52:34)
    at NodePath.traverse (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/path/index.js:104:24)
    at Scope.crawl (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/scope/index.js:685:10)
    at Scope.init (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/scope/index.js:656:12)
    at NodePath.setScope (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/path/context.js:120:61)
    at NodePath.setContext (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/path/context.js:132:8)
    at NodePath.pushContext (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/path/context.js:189:8)
    at TraversalContext.visitQueue (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/context.js:78:14)
    at TraversalContext.visitSingle (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/context.js:65:19)
    at TraversalContext.visit (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/context.js:109:19)
    at traverseNode (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/traverse-node.js:22:17)
    at traverse (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@babel+traverse@7.22.15/node_modules/@babel/traverse/lib/index.js:52:34)
    at preprocessor (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@ianvs+prettier-plugin-sort-imports@4.1.0_prettier@2.8.8/node_modules/@ianvs/prettier-plugin-sort-imports/lib/src/preprocessors/preprocessor.js:24:28)
    at Object.defaultPreprocessor [as preprocess] (/my-personal/prettier-bug-vscode/node_modules/.pnpm/@ianvs+prettier-plugin-sort-imports@4.1.0_prettier@2.8.8/node_modules/@ianvs/prettier-plugin-sort-imports/lib/src/preprocessors/default.js:8:44)
    at Object.parse (/my-personal/prettier-bug-vscode/node_modules/.pnpm/prettier@2.8.8/node_modules/prettier/index.js:7511:25)
    at coreFormat (/my-personal/prettier-bug-vscode/node_modules/.pnpm/prettier@2.8.8/node_modules/prettier/index.js:8829:18)
    at formatWithCursor2 (/my-personal/prettier-bug-vscode/node_modules/.pnpm/prettier@2.8.8/node_modules/prettier/index.js:9021:18)
    at /my-personal/prettier-bug-vscode/node_modules/.pnpm/prettier@2.8.8/node_modules/prettier/index.js:38183:12
    at Object.format (/my-personal/prettier-bug-vscode/node_modules/.pnpm/prettier@2.8.8/node_modules/prettier/index.js:38197:12)
    at t.PrettierMainThreadInstance.format (/Users/my-personal/.vscode/extensions/esbenp.prettier-vscode-10.1.0/dist/extension.js:1:18023)
    at t.default.format (/Users/my-personal/.vscode/extensions/esbenp.prettier-vscode-10.1.0/dist/extension.js:1:16114)
    at async t.PrettierEditProvider.provideEdits (/Users/my-personal/.vscode/extensions/esbenp.prettier-vscode-10.1.0/dist/extension.js:1:12672)
    at async Y.provideDocumentRangeFormattingEdits (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:104:45197)
["INFO" - 5:00:52 PM] Formatting completed in 174ms.

Contribute to @ianvs/prettier-plugin-sort-imports

IanVS commented 12 months ago

I notice you're importing Card but also defining a const named Card as well. Does the error resolve if you rename one of those?

GiancarlosIO commented 12 months ago

@IanVS OMG, you are right!!!

Kinda disappointed because ts doesn't throw an error here 🤔

Anyways, that solves the error

Thanks!!