You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Howard Zuo (Jira)" <ji...@apache.org> on 2021/05/03 18:46:00 UTC

[jira] [Created] (ARROW-12636) [JS] ESM Tree-Shaking produces broken code

Howard Zuo created ARROW-12636:
----------------------------------

             Summary: [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


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`.

 

Indeed switching to the CJS variants like `@apache-arrow/es2015-cjs` fixes the issue.

 

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)