Typescript issue: weird dependency on node-fetch in declaration file
First of all thanks for awesome polyfill @developit. It's brilliant and altogether with preact it makes a perfect match for our product bundle!
As for this issue I'm not sure why there's a dependency on node-fetch in declaration file. When I try to use unfetch in my TS code I get this:
ERROR in [at-loader] ./node_modules/unfetch/src/index.d.ts:6:8
TS7016: Could not find a declaration file for module 'node-fetch'. '/Users/dsorin/.../node_modules/node-fetch/index.js' implicitly has an 'any' type.
Try `npm install @types/node-fetch` if it exists or add a new declaration (.d.ts) file containing `declare module 'node-fetch';`
I know this can be fixed by installing typings for node-fetch but this leads to a further questions like "what's this typing doing in our dependencies if we don't use node-fetch package? let's remove it".
Maybe @niedzielski knows the answer as the git blame author for this commit?
It was probably a mistake. Our project at the time was using isomorphic-unfetch which already specified node-fetch as a dependency and I likely conflated them. I see a definition of fetch in the TypeScript DOM library that can probably be used instead. I wish I could remember more detail but I think at the time there was also a difference in the quality of the typings and node-fetch provided something over fetch but that really only mattered to isomorphic-unfetch clients.
Gotcha. Are you okay if I send a PR to improve this?
@1999, sure, I'm just a random contributor. It's up to @developit to merge it, of course! You may wish to validate that whatever replacement you choose maintains compatibility with isomorphic-unfetch in a headless Node.js environment without extra dependencies.
After thinking on this further and looking at the files in the files in my PR, I forgot that this repo actually houses both unfetch and isomorphic-unfetch. Maybe one complication I had was that my headless server code didn't use the TypeScript DOM library so it didn't have access to that fetch definition but I did have access to node-fetch typing in both client and server? Sorry, but I can't remember the details.
Fair enough 👍
Is this why I'm getting a TypeScript error when I compile my project?
node_modules/unfetch/src/index.d.ts:7:8 - error TS2307: Cannot find module 'node-fetch' or its corresponding type declarations.
7 } from "node-fetch";
~~~~~~~~~~~~
If the typings in @types/node-fetch work, I don't know why it's a problem to just reuse those? But either way, it's currently an undeclared dependency - you have to get a build failure and then manually install the package, so I think either that should be fixed, or the dependency should be removed?
(I don't use the isomorphic stuff, so it's all the same to me - but having a broken dependency definitely isn't great.)
Same thoughts, my TypeScript build is breaking when using isomorphic-unfetch as a dependency. Even after an npm install --dev @types/node-fetch my TypeScript build is still broken.
Error: node_modules/isomorphic-unfetch/index.d.ts:7:8 - error TS7016: Could not find a declaration file for module 'node-fetch'. '/Users/dawsonbotsford/code/earn/essential-eth/node_modules/node-fetch/lib/index.js' implicitly has an 'any' type.
Try `npm i --save-dev @types/node-fetch` if it exists or add a new declaration (.d.ts) file containing `declare module 'node-fetch';`
7 } from "node-fetch";
Any thoughts on fixing this in the core package?
node_modules/isomorphic-unfetch/index.d.ts:7:8 - error TS7016: Could not find a declaration file for module 'node-fetch'. '/workspace/node_modules/node-fetch/lib/index.js' implicitly has an 'any' type.
Try `npm i --save-dev @types/node-fetch` if it exists or add a new declaration (.d.ts) file containing `declare module 'node-fetch';`
7 } from "node-fetch";
~~~~~~~~~~~~
This event can probably be cured by
npm i --save-dev @types/[email protected]
any progress?