fix: invalid path for export in package.json (v 5.0.0)
First of all, thanks for this library! We have been using it for quite a long time, and it works like a charm.
Description
It seems that there are invalid values exported in the package.json https://github.com/developit/unfetch/blob/main/package.json#L18
It causes issue while using unfetch as a module, for instance, we use webpack and once upgraded to 5.0.0 it started to break the build with the given (not so clear, to say the least) error:
ERROR in ./src/index.js 1:0-30
Module not found: Error: Can't resolve 'unfetch' in '/Users/user/dev/unfetch-issue-demo/src'
resolve 'unfetch' in '/Users/user/dev/unfetch-issue-demo/src'
Parsed request is a module
using description file: /Users/user/dev/unfetch-issue-demo/package.json (relative path: ./src)
Field 'browser' doesn't contain a valid alias configuration
resolve as module
/Users/user/dev/unfetch-issue-demo/src/node_modules doesn't exist or is not a directory
looking for modules in /Users/user/dev/unfetch-issue-demo/node_modules
single file module
using description file: /Users/user/dev/unfetch-issue-demo/package.json (relative path: ./node_modules/unfetch)
no extension
Field 'browser' doesn't contain a valid alias configuration
/Users/user/dev/unfetch-issue-demo/node_modules/unfetch is not a file
.tsx
Field 'browser' doesn't contain a valid alias configuration
/Users/user/dev/unfetch-issue-demo/node_modules/unfetch.tsx doesn't exist
.ts
Field 'browser' doesn't contain a valid alias configuration
/Users/user/dev/unfetch-issue-demo/node_modules/unfetch.ts doesn't exist
.js
Field 'browser' doesn't contain a valid alias configuration
/Users/user/dev/unfetch-issue-demo/node_modules/unfetch.js doesn't exist
.jsx
Field 'browser' doesn't contain a valid alias configuration
/Users/user/dev/unfetch-issue-demo/node_modules/unfetch.jsx doesn't exist
existing directory /Users/user/dev/unfetch-issue-demo/node_modules/unfetch
...
Demo
Here you can see an example of this issue: https://github.com/cristianoliveira/unfetch-issue-demo
Solution
After pointing to src/index.mjs it started to compile again and it is working as expected. 😄
Let me know if this is the right solution.
Relates to
https://github.com/developit/unfetch/issues/163 https://github.com/developit/unfetch/issues/162
For those who use webpack and want a quick fix, while this isn't correctly addressed, you can create an alias and point to the correct file:
In the webpack.config.js include:
resolve: {
alias: {
'unfetch': path.resolve(__dirname, 'node_modules/unfetch/dist/unfetch.mjs'),
},
},
Looks correct to me!
@rschristian @developit pinging in case you have forgotten to approve
Sorry, not a maintainer, my approval does nothing. Just a drive-by suggestion as I ran into this and was seeing if anyone had submitted a fix yet.
For those who use webpack and want a quick fix, while this isn't correctly addressed, you can create an alias and point to the correct file:
In the webpack.config.js include:
resolve: { alias: { 'unfetch': path.resolve(__dirname, 'node_modules/unfetch/dist/unfetch.mjs'), }, },
Workes fine. Thanks
Can this be merged? I really need this change since in cannot start storybook in my project, Thanks for fixing this! 🥳
@rschristian , Kindly approve & merge it
@rschristian , Kindly approve & merge it
https://github.com/developit/unfetch/pull/164#issuecomment-1486112998
@rschristian , Kindly approve & merge it
But its showing that your review is pending..
Doesn't matter -- GitHub's UI is a bit weird there for sure, but the approval of non-maintainers does nothing. You'd see a "collaborator" badge (I think) next to my name if I was able to approve and merge.
@developit ?
This would be really nice to have merged since it currently is unusable in vite without a manual override.
For anyone else using vite, adding a resolve alias solved this for now:
defineConfig({
resolve: {
alias: {
unfetch: path.resolve(__dirname, "node_modules/unfetch/dist/unfetch.mjs"),
}
}
})
This would be really nice to have merged since it currently is unusable in
vitewithout a manual override.
=> Failed to build the preview ReferenceError: path is not defined
And if I'm importing
import path from 'path';
I'm still getting
Error: Failed to resolve entry for package "unfetch". The package may have incorrect main/module/exports specified in its package.json.
Can someone merge this, please?