-
Notifications
You must be signed in to change notification settings - Fork 19
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
Unable to get 0.6.0-beta.1 to work in Node #412
Comments
Hi! Thanks for trying out the library! I was just testing the new conditional export support in 0.6.0-beta.1, so it's good to see that it needs improvement.
To fix the error while using this esm import, you need to await the default export. E.g. https://observablehq.com/@kylebarron/geoparquet-on-the-web#readParquet.
I'm not super familiar with intricacies of JS bundling; do you have an idea of why that is? Both parquet-wasm/templates/package.json Lines 57 to 71 in 2204f94
Hmm, maybe we should add specific exports for e.g.
Oh I didn't know that was possible. I'm less familiar with NPM distribution compared to PyPI, where everything with an alpha or beta tag is considered a pre-release. I guess I need to look at npm publish options. I'm sick this week but I'll try to improve this usability when I'm healthy! |
Understood, but I’m in Node and I don’t want the esm import — I want the one targeting Node, which isn’t happening based on how the conditional imports are declared in the package.json. I think that’s because Node itself supports both import and require, and in my case, I’m using type: "module" and hence Node is favoring the “import” conditional over the “node” conditional. Per the conditional exports docs:
So I think you probably need something like this but I haven’t tested… ".": {
"node": {
"types": "./node/arrow1.d.ts",
"default": "./node/arrow1.js"
},
"types": "./esm/arrow1.d.ts",
"default": "./esm/arrow1.js"
} This should cause Node to use the Node-targeted entries, and everything else will use the esm bundle. P.S. I hope you feel better! 🙏 Thanks for the support. 😁 |
I'm unable to reproduce your original issue. With node {
"dependencies": {
"parquet-wasm": "^0.6.0-beta.1"
}
} and a import * as Parquet from "parquet-wasm";
console.log(Parquet) that seemed to just work. In any case, I made #414. Are you able to see if that fixes the issues on your end? Or would it be easier if I published a |
This is still an issue on beta.2. |
Could you test with #414? |
edit: I discovered that you can't do git imports of this module because it has a build step that npm doesn't know about. Deleted this comment after I understood that |
OK, I take it all back, the sample code runs with the code from #414, it just took me a long time to figure out how. Steps:
|
I published 0.6.0 just now, and believe this to be resolved. Reopen or add a new comment if you find a bug. |
Thanks! edit: just adding a link to the issue that got me here |
Thanks for this library! I am trying to use the latest version published to npm, 0.6.0-beta.1. It seems that the conditional exports added in #382 cause Node to import the “esm” version rather than the “node” version.
Here is what I wrote:
This results in the following error, and note that it’s importing
esm/arrow1.js
:I tried to fix this by importing the Node entry explicitly:
However, this isn’t allowed: 😞
I was able to workaround this problem by downgrading to 0.5.0 which doesn’t have the named entries.
It seems like the top-level
import
condition is taking precedence over thenode
condition…(Related, did you intend to make 0.6.0-beta.1 the latest tag on npm? Or did you intend it to be a prerelease? If so you may want to use the next tag to encourage folks to stay on 0.5.0 until 0.6.0 is out of beta. 🙏)
The text was updated successfully, but these errors were encountered: