Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: invalid path for export in package.json (v 5.0.0) #164

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

cristianoliveira
Copy link

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

#163
#162

@cristianoliveira
Copy link
Author

cristianoliveira commented Feb 10, 2023

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'),
    },
  },

package.json Outdated Show resolved Hide resolved
Co-authored-by: Ryan Christian <[email protected]>
@rschristian
Copy link

Looks correct to me!

@ayZagen
Copy link

ayZagen commented Mar 27, 2023

@rschristian @developit pinging in case you have forgotten to approve

@rschristian
Copy link

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.

@denizsult
Copy link

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

jonathansick added a commit to lsst-sqre/squareone that referenced this pull request Aug 15, 2023
This is pending a fix to a how unfetch 5 exports its files, e.g.
developit/unfetch#164
jonathansick added a commit to lsst-sqre/squareone that referenced this pull request Aug 16, 2023
This is pending a fix to a how unfetch 5 exports its files, e.g.
developit/unfetch#164
@Skopea
Copy link

Skopea commented Sep 9, 2023

Can this be merged? I really need this change since in cannot start storybook in my project, Thanks for fixing this! 🥳

@alinasir85
Copy link

@rschristian , Kindly approve & merge it

@rschristian
Copy link

@rschristian , Kindly approve & merge it

#164 (comment)

@alinasir85
Copy link

@rschristian , Kindly approve & merge it

#164 (comment)

But its showing that your review is pending..

Screenshot 2023-10-24 at 12 47 32 AM

@rschristian
Copy link

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.

@alinasir85
Copy link

@developit ?

@katerberg
Copy link

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"),
    }
  }
})

@tdacu
Copy link

tdacu commented Nov 16, 2023

This would be really nice to have merged since it currently is unusable in vite without 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.

pheuberger added a commit to pheuberger/toucan-sdk that referenced this pull request Nov 29, 2023
Without this patch people were experiencing problems when bundling the
SDK. See issue ToucanProtocol#95 ToucanProtocol#95

The problem is that `isomorphic-unfetch` 4.0.2 upgraded to `unfetch`
5.0.0 which currently has an issue with their module exports leading to
an error when bundling the lib itself or any other lib that depends on
`unfetch`.

See this PR for more information: developit/unfetch#164

Once this PR is merged we can go back to the latest `isomorphic-unfetch`
version.
pheuberger added a commit to pheuberger/toucan-sdk that referenced this pull request Nov 29, 2023
Without this patch people were experiencing problems when bundling the
SDK. See issue ToucanProtocol#95 ToucanProtocol#95

The problem is that `isomorphic-unfetch` 4.0.2 upgraded to `unfetch`
5.0.0 which currently has an issue with their module exports leading to
an error when bundling the lib itself or any other lib that depends on
`unfetch`.

See this PR for more information: developit/unfetch#164

Once the PR above is merged we can go back to the latest `isomorphic-unfetch`
version.
@tim-kilian
Copy link

Can someone merge this, please?

unflxw added a commit to appsignal/appsignal-javascript that referenced this pull request Apr 23, 2024
An issue with `unfetch@5`, depended on by `[email protected]`,
breaks bundling with tools such as `esbuild` and `webpack`:
developit/unfetch#164
@alopix
Copy link

alopix commented Aug 27, 2024

Any chance this can get merged and published? Lots of bundler workarounds required right now 😅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.