You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Krisztian Szucs (Jira)" <ji...@apache.org> on 2021/10/18 14:32:00 UTC
[jira] [Updated] (ARROW-12636) [JS] ESM Tree-Shaking produces
broken code
[ https://issues.apache.org/jira/browse/ARROW-12636?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Krisztian Szucs updated ARROW-12636:
------------------------------------
Fix Version/s: 6.0.0
> [JS] ESM Tree-Shaking produces broken code
> ------------------------------------------
>
> Key: ARROW-12636
> URL: https://issues.apache.org/jira/browse/ARROW-12636
> Project: Apache Arrow
> Issue Type: Bug
> Components: JavaScript
> Affects Versions: 4.0.0
> Reporter: Howard Zuo
> Assignee: Paul Taylor
> Priority: Critical
> Labels: pull-request-available
> Fix For: 5.0.1, 6.0.0
>
> Time Spent: 40m
> Remaining Estimate: 0h
>
> When a JS application depends on `apache-arrow` or any of the ESM variants, Arrow's package.json declares `sideEffects: false` which allows bundlers like Webpack or Rollup to remove all code that's evaluated at the top level of all modules (any code that isn't explicitly imported can be pruned).
>
> However, there are important top-level side effects that Arrow relies on, e.g. for binding methods on types:
> [https://github.com/apache/arrow/blob/c0445d69088a6fbd9c026ecac6a99c6cd4df4865/js/src/vector/index.ts#L167-L179]
>
> So currently, any JS app that uses tree-shaking and depends on `apache-arrow` or the ESM variants will throw if any of those methods are called, e.g. in my case I see `TypeError: e._chunks[t].get is not a function` when calling `table.get`.
>
> Indeed switching to the CJS variants like `@apache-arrow/es2015-cjs` fixes the issue, since the Arrow build does not inject `sideEffects: false` into its package.json for non-ESM variants.
>
> For reference, the `sideEffects: false` logic was introduced in this PR and issue:
> [https://github.com/apache/arrow/pull/8418/]
> https://issues.apache.org/jira/browse/ARROW-10255
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)