tsdx: missing dependency `eslint-config-react-app`?
Current Behavior
after updating in our monorepo we found that tsdx failed on:
tsdx lint src
(node:82469) UnhandledPromiseRejectionWarning: Error: Failed to load config "react-app" to extend from.
Referenced from: BaseConfig
at configMissingError (/XXXXX/node_modules/eslint/lib/cli-engine/config-array-factory.js:233:9)
at ConfigArrayFactory._loadExtendedShareableConfig (//XXXXX/node_modules/eslint/lib/cli-engine/config-array-factory.js:712:23)
at ConfigArrayFactory._loadExtends (/XXXXX/node_modules/eslint/lib/cli-engine/config-array-factory.js:617:25)
at ConfigArrayFactory._normalizeObjectConfigDataBody (/XXXXX/node_modules/eslint/lib/cli-engine/config-array-factory.js:547:25)
at _normalizeObjectConfigDataBody.next (<anonymous>)
at ConfigArrayFactory._normalizeObjectConfigData (/XXXXX/node_modules/eslint/lib/cli-engine/config-array-factory.js:491:20)
at _normalizeObjectConfigData.next (<anonymous>)
at createConfigArray (/XXXXX/node_modules/eslint/lib/cli-engine/config-array-factory.js:307:25)
at ConfigArrayFactory.create (/XXXXX/node_modules/eslint/lib/cli-engine/config-array-factory.js:362:16)
at createBaseConfigArray (/XXXXX/node_modules/eslint/lib/cli-engine/cascading-config-array-factory.js:84:48)
(node:82469) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:82469) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
✨ Done in 0.94s.
After digging though both tsdx and eslint to figure out what went wrong
i found that if i add eslint-config-react-app to the project it worked
npm install --save-dev eslint-config-react-app
now the project is a NONE react project and a really small helper project. It seems to me that tsdx is missing its sub requirement for linting.
| Software | Version(s) |
|---|---|
| TSDX | 0.12.1 |
| TypeScript | 3.4.5 |
| Browser | NA |
| npm/Yarn | Yarn 1.21.1 |
| Node | 10.17.0 |
| Operating System | MacOS |
About this issue
- Original URL
- State: open
- Created 4 years ago
- Reactions: 17
- Comments: 21 (4 by maintainers)
Commits related to this issue
- Use Yarn Resolutions to force ESLint version Ref: https://github.com/formium/tsdx/issues/428#issuecomment-759022217 — committed to upleveled/preflight by karlhorky 3 years ago
- Use Yarn Resolutions to force ESLint version Ref: https://github.com/formium/tsdx/issues/428#issuecomment-759022217 — committed to gruvector/preflight by karlhorky 3 years ago
I added this particular version eslint-plugin-prettier and the problem seems to be fixed “eslint-plugin-prettier”: “3.4.1”
Hi yes, this just started failing after a recent rm -rf node_modules and npm install. Something happened.
npm install --save-dev eslint-config-react-appdid not fix my problem.A workaround that I am using for now is to use Yarn resolutions in
package.jsonas such to forcetsdxto also resolveeslintto7.17.0:Edit: This should also work with npm Overrides.
I faced similar problem. I have fix the error after installing follow packages
is this the same problem?
I think we can avoid this issue with creating a TSDX preset, as mentioned in #634
Yeah this issue also bit me just now.
The problem occurs because as soon as a different
eslintis installed (eg. the current version,7.17.0), the other version insidetsdxis reorganized inside of<project dir>/node_modules/tsdx/node_modules. This version of ESLint cannot resolve the configs, plugins, etc. because of ESLint’s unique resolution algorithm.I guess if
tsdxwants to keep the dependency oneslint, it could instead running the version at<project dir>/node_modules/eslint- which would either run the version fromtsdxor the user’s version.What do you think @sw-yx ?
If you are using a monorepo with yarn workspace, try applying nohoist on tsdx
see https://classic.yarnpkg.com/blog/2018/02/15/nohoist/