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

v6.10.7 "The requested module './matrix.js' does not provide an export named 'default'" #174

Open
jdcoldsmith opened this issue Oct 30, 2023 · 17 comments

Comments

@jdcoldsmith
Copy link

When upgrading from version 6.10.5 to 6.10.7, I am now getting this error in the matrix.mjs file.
image
image

Here is what my import looks like:
image

Any help would be appreciated!

@targos
Copy link
Member

targos commented Oct 31, 2023

Can you provide a minimal reproduction?

@targos
Copy link
Member

targos commented Nov 4, 2023

Please try again with v6.10.8. If it still doesn't work, please provide a way to reproduce.

@jdcoldsmith
Copy link
Author

My apologies for not responding sooner! Thank you for your quick response! I will try v6.10.8 and let you know if I run into any issues!

@jdcoldsmith
Copy link
Author

I discovered the issue. We were attempting to upgrade from v6.10.5 to version v6.10.8 and in those changes a change was made to how the package is exported which broke our use of it in a browser context. I had to instruct our dev server to treat ml-matrix as CommonJS instead of ES and we are good to go now.

@targos
Copy link
Member

targos commented Nov 7, 2023

Would you be able to explain how you use it in a browser context? Maybe we can do something to fix it.

@jdcoldsmith
Copy link
Author

Hi @targos I apologize for the late response but I would like to work through diagnosing and resolving this without a workaround. Currently I am using ml-matrix version 6.10.8 and this is the error that I get when attempted to load our web app.
image

The error occurs on this line of the matrix.js file
image

I believe the main problem is in the matrix.js file where it uses exports and require which cannot be used in a browser context. I am not sure how much work it would be for you to make this browser friendly, but this would be a really cool addition!

@targos
Copy link
Member

targos commented Nov 22, 2023

I still don't know how you're using the library in a browser context. Most of our apps are browser-based and work fine.

@jdcoldsmith
Copy link
Author

My apologies for not giving you more information.

We use it in 3 places in our app but here is an example of how we import ml-matrix
image

Another thing is that we have "type": "module" set in our package.json. I am not sure if that is an issue.

Thank you for your time helping with this!

@targos
Copy link
Member

targos commented Nov 22, 2023

Do you have a bundler / dev server ?

@jdcoldsmith
Copy link
Author

jdcoldsmith commented Nov 22, 2023

Another interesting piece of information is that when building our app using Rollup, we need to use a commonjs plugin specifically for ml-matrix or we get these errors.
image
And when running the compiled code without the commonjs plugin we get this error:
image
image

As for our dev server we use Modern Web's @web/dev-server. In order get ml-matrix to work when we serve our code locally we have to use a commonjs plugin and treat ml-matrix as commonjs here as well

@targos
Copy link
Member

targos commented Nov 29, 2023

This is a really complicated issue. I'm sorry, but I don't see how we can make a fix for your use case without breaking others (recent fixes were related to the default export and CommonJS-ESM interop).
I'm happy to accept a patch or any idea.

We need the package to work at least:

  • In Node.js from CommonJS
  • In Node.js from ESM
  • When imported by TypeScript-generated code (CommonJS) with esModuleInterop: true
  • In bundlers such as Vite and Webpack.

@jdcoldsmith
Copy link
Author

Thank you for your time responding to this! I will reach out to some other coworkers to see if we can come up with more ideas or solutions. I am curious, you mentioned that there are others using this package in a browser context. How are they using it that doesn't require them to force the CommonJS version? Are they using Vite or Webpack as their dev server and bundler and that is why it works for them?

@targos
Copy link
Member

targos commented Nov 29, 2023

Are they using Vite or Webpack as their dev server and bundler and that is why it works for them?

Yes, and to be clear, they are me and my team :)

@jdcoldsmith
Copy link
Author

Awesome! Vite is something that we are interested in potentially transitioning to in the future so I will keep that in mind. I will reach back out after chatting with my team about solutions for getting this to work in our current situation.

@lxfu1
Copy link

lxfu1 commented Feb 28, 2024

The same issue.

@rebior
Copy link

rebior commented Nov 18, 2024

Hi,

Thank you for that package!

I have exact the same issue here: Using ml-matrix in a browser as ES module does not work. Doesn't the extension ".mjs" indicate that this is a ES module and therefore it is an error to import any other type of module there?
Why am I using it as a module in the browser? My framework provides an API for developing plugins. Those plugins share various packages, one of them is ml-matrix. If I would bundle all packages into all plugins then the total code size would increase and problems with multiple instances of a single package (most likely in different versions) would pop up.

I would really appreciate if you could solve this issue and make .mjs a real ES module

@keroiber
Copy link

Hello,

from your package.json "module" field I would guess that "src/index.js" is your real ESM entrypoint. As node says that "exports" takes precedence over the other fields: What about adding "import": "src/index.js" to the "exports" filed?

"exports": {
    ".": {
      "types": "./matrix.d.ts",
      "import": "src/index.js",
      "require": "./matrix.js",
      "default": "./matrix.mjs"
    }
  },

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

No branches or pull requests

5 participants