reactjs / react-codemod

React codemod scripts
MIT License
4.21k stars 290 forks source link

Error when running rename-unsafe-lifecycles #254

Open wesleyyee opened 4 years ago

wesleyyee commented 4 years ago

Seeing this error when running rename-unsafe-lifecycles:


Error: did not recognize object of type "ImportExpression"
    at Object.getFieldNames (/Users/wes/.npm/_npx/76919/lib/node_modules/react-codemod/node_modules/ast-types/lib/types.js:701:19)
    at getSortedChildNodes (/Users/wes/.npm/_npx/76919/lib/node_modules/react-codemod/node_modules/recast/lib/comments.js:50:23)
    at getSortedChildNodes (/Users/wes/.npm/_npx/76919/lib/node_modules/react-codemod/node_modules/recast/lib/comments.js:63:9)
    at decorateComment (/Users/wes/.npm/_npx/76919/lib/node_modules/react-codemod/node_modules/recast/lib/comments.js:73:22)
    at decorateComment (/Users/wes/.npm/_npx/76919/lib/node_modules/react-codemod/node_modules/recast/lib/comments.js:84:13)
    at decorateComment (/Users/wes/.npm/_npx/76919/lib/node_modules/react-codemod/node_modules/recast/lib/comments.js:84:13)
    at decorateComment (/Users/wes/.npm/_npx/76919/lib/node_modules/react-codemod/node_modules/recast/lib/comments.js:84:13)
    at decorateComment (/Users/wes/.npm/_npx/76919/lib/node_modules/react-codemod/node_modules/recast/lib/comments.js:84:13)
    at /Users/wes/.npm/_npx/76919/lib/node_modules/react-codemod/node_modules/recast/lib/comments.js:129:9
    at Array.forEach (<anonymous>)```
threepointone commented 4 years ago

Could you try to isolate what file this happened on? If you could make a git repo with a reduced usecase, that would be excellent.

Just to be sure that it isn’t related to your own dependencies, would you also try running this from outside your project? ie- instead of cd my-project and npx react-codemod ..., could you run `npx react-codemod my-project‘?

wesleyyee commented 4 years ago

Ahh it seems to not like React.lazy

wesleyyee commented 4 years ago

@threepointone https://github.com/wesleyyee/codeshift-react-lazy

threepointone commented 4 years ago

Very helpful, thank you! I'll have a look this weekend.

Jayphen commented 4 years ago

@threepointone Did you ever solve this? I have a similar problem in a codemod I am writing where it chokes on the dynamic import.

Not using React.lazy, but same syntax with loadable:

const Dooby = loadable(
  () => import('dooby/doo'),
  {
    fallback: <LoadingPage />
  }
);
threepointone commented 4 years ago

I'm not doing any active development on this, but I'd be happy to review and land a PR with a fix.

sterlu commented 4 years ago

Hey, not sure if related, but also getting a similar error Error: did not recognize object of type "ChainExpression" with the same stack trace when running rename-unsafe-lifecycles

rbalmf commented 4 years ago

@sterlu I had the same ChainExpression error when running over our large non-TS codebase - it seems to choke on optional chaining operators ?..

By telling the codemod to treat the code as Typescript it worked though.

parthakshay commented 2 years ago

try npx react-codemod rename-unsafe-lifecycles it'll work