mljs / matrix

Matrix manipulation and computation library
https://mljs.github.io/matrix/
MIT License
353 stars 54 forks source link

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

Open jdcoldsmith opened 10 months ago

jdcoldsmith commented 10 months ago

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 commented 10 months ago

Can you provide a minimal reproduction?

targos commented 10 months ago

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

jdcoldsmith commented 10 months ago

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 commented 10 months ago

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 commented 10 months ago

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

jdcoldsmith commented 9 months ago

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 commented 9 months ago

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 commented 9 months ago

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 commented 9 months ago

Do you have a bundler / dev server ?

jdcoldsmith commented 9 months ago

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 commented 9 months ago

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:

jdcoldsmith commented 9 months ago

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 commented 9 months ago

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 commented 9 months ago

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 commented 6 months ago

The same issue.