reactjs / react-codemod

React codemod scripts
MIT License
4.2k stars 287 forks source link

Error `did not recognize object of type "PropertyDefinition"` when running `update-react-imports` #314

Open julienw opened 1 year ago

julienw commented 1 year ago

I tried to run update-react-imports on our codebase https://github.com/firefox-devtools/profiler/ (commit hash e8a3afd45a8125de9c37c546f6b50c8004f122e7), and got the following error on several files:

Error: did not recognize object of type "PropertyDefinition"
    at Object.getFieldNames (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/ast-types/lib/types.js:660:19)
    at getSortedChildNodes (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/recast/lib/comments.js:53:23)
    at getSortedChildNodes (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/recast/lib/comments.js:62:9)
    at getSortedChildNodes (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/recast/lib/comments.js:62:9)
    at decorateComment (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/recast/lib/comments.js:70:22)
    at decorateComment (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/recast/lib/comments.js:82:13)
    at decorateComment (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/recast/lib/comments.js:82:13)
    at /home/julien/.npm/_npx/968b6945ac80b57b/node_modules/recast/lib/comments.js:119:9
    at Array.forEach (<anonymous>)
    at Object.attach (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/recast/lib/comments.js:117:14)
    at Object.parse (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/recast/lib/parser.js:107:16)
    at fromSource (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/jscodeshift/src/core.js:82:25)
    at core (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/jscodeshift/src/core.js:44:5)
    at j (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/jscodeshift/src/core.js:142:12)
    at module.exports (/home/julien/.npm/_npx/968b6945ac80b57b/node_modules/react-codemod/transforms/update-react-imports.js:12:16)

It's not clear to me how to debug this further, but hopefully you'll be able to reproduce using code directly.

julienw commented 1 year ago

I must add that this worked for some files too.

pascalduez commented 2 months ago

Hello :)

Hoping to revive this issue, especially with React 19 and the update-react-imports codemod that should gain more traction.

I hit various errors related to "recent" Flow syntax. PropertyDefinition, but also IndexedAccessType etc.

It might just be a matter of updating a dependency or two. Most notably ast-types.

Please see: https://github.com/facebook/jscodeshift/issues/478
https://github.com/benjamn/ast-types/issues/596

pascalduez commented 2 months ago

Okay, aftet some time to figure out the new resolutions syntax in Yarn Berry...
I got it working with a local install and resolutions.

  "resolutions": {
    "jscodeshift": "latest",
    "ast-types": "npm:@gkz/ast-types@^0.14.4",
    "flow-parser": "0.152"
  }

And I guess for npm:

  "overrides": {
    "jscodeshift": "latest",
    "ast-types": "npm:@gkz/ast-types",
    "flow-parser": "0.152"
  }

Made a temporary repo to help with this issue https://github.com/pascalduez/react-codemod-patched