If you’re using TypeScript you might have run into this error before. The second part of the error says:
Try `npm install @types/XYZ` if it exists or add a new declaration (.d.ts) file containing `declare module 'XYZ';
If XYZ is a direct dependency of your project, you can follow the instructions from the error message and run
npm install @types/XYZ.
Sometimes the types might not be available and the
npm install command fails. In that case, you can use the second option and declare the module.
Here’s how I usually do that.
- Create a folder called
- Create a file in that folder called
- Declare the module(s) like this:
declare module 'XYZ';
Lastly, you also need to add the path to your
index.d.ts in the
tsconfig.json file under the
typeRoots element, like this:
But ‘XYZ’ is not a direct dependency of my project
I’ve started seeing this error when I upgraded eslint to 7.4.0. And to make things even more complicated:
- It was only happening during the CI build. I tried to reproduce the issue locally on a “clean” environment and I couldn’t get it to fail.
- XYZ was not my direct dependency. My project has a dependency on “ABC” and “ABC” has a dependency on “XYZ”
It felt weird to install types for 3rd or n-party dependency and it didn’t make sense to me (I might be wrong though!).
Instead of ratholing on that, I added the following statement to the
tsconfig.json file to disable the ‘any’ type errors:
Note that disabling this will disable the rule for your project as well. But at least your build will be working, until the n-th dependency fixes this issue in their codebase.