JSONPath-Plus / JSONPath

A fork of JSONPath from http://goessner.net/articles/JsonPath/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Package exports mean node version is always used with Webpack 5

gjvoosten opened this issue · comments

Describe the bug

The current package.json specifies: https://github.com/JSONPath-Plus/JSONPath/blob/v5.0.2/package.json#L7-L10
which, if I read https://webpack.js.org/guides/package-exports/ correctly, mean the node version is always imported, even in browser mode.

We noticed this change in behaviour when our JSONPath queries were suddenly taking much longer to run after upgrading from v4.0.0 to v5.0.2. A query that would take < 3ms under v4.0.0 was suddenly taking > 100ms under v5.0.2. Replacing index-node-esm.mjs with index-browser-esm.js would bring the performance back to normal.

From the PR at #146 (comment)

Hmm... I've added a comment at webpack/webpack#11597 (comment) , as it looks to me that bundlers should not be using type for interpretation of non-Node fields. There is a workaround there that may work for now without our changing the code, as I really think we should be able to use ".js" with browser ESM while using type: commonjs for Node. If we don't hear back in some time, let's file a new Webpack issue.

Also, when we may be able to revisit this, per the end of https://nodejs.org/api/packages.html#packages_conditional_exports :

...using "node" and "default" condition branches is usually preferable to using "node" and "browser" condition branches.