uber / nebula.gl

A suite of 3D-enabled data editing overlays, suitable for deck.gl
https://nebula.gl/
Other
686 stars 166 forks source link

[Bug] package.json should contain `exports` for usage in NodeJS #888

Open keller-mark opened 11 months ago

keller-mark commented 11 months ago

Describe the bug

Hi, I am using NebulaGL in my web application. I am running into issues when importing NebulaGL (directly or indirectly) in unit testing frameworks which execute code using NodeJS (vitest in particular) because the package.json for nebula.gl (as well as for @nebula.gl/*):

This is also clear when checking nebula.gl in Publint: https://publint.dev/nebula.gl@1.1.0-alpha.5

Note: This issue is also related to this one in DeckGL https://github.com/visgl/deck.gl/issues/8186

Actual Result

 FAIL  src/nebulagl.test.js [ src/nebulagl.test.js ]
Error: require() of ES Module /home/projects/vitejs-vite-csquxp/node_modules/@mapbox/tiny-sdf/index.js from /home/projects/vitejs-vite-csquxp/node_modules/@deck.gl/layers/dist/es5/text-layer/font-atlas-manager.js not supported.
Instead change the require of index.js in /home/projects/vitejs-vite-csquxp/node_modules/@deck.gl/layers/dist/es5/text-layer/font-atlas-manager.js to a dynamic import() which is available in all CommonJS modules.
 ❯ makeNodeErrorWithCode/< ../../../blitz.7a1fe16d.js:36:4174
 ❯ Module."] ../../../blitz.7a1fe16d.js:55:15296
 ❯ Module.prototype.load ../../../blitz.7a1fe16d.js:55:13469
 ❯ Module._load ../../../blitz.7a1fe16d.js:55:10541
 ❯ Module.prototype.require ../../../blitz.7a1fe16d.js:55:13787
 ❯ i ../../../blitz.7a1fe16d.js:98:2198
 ❯ _0x5b8ff6 ../../../blitz.7a1fe16d.js:355:176557
 ❯ function ../../../blitz.7a1fe16d.js:355:177359
 ❯ Module.prototype._compile ../../../blitz.7a1fe16d.js:55:14883
 ❯ Module."] ../../../blitz.7a1fe16d.js:55:15564
 ❯ Module.prototype.load ../../../blitz.7a1fe16d.js:55:13469
 ❯ Module._load ../../../blitz.7a1fe16d.js:55:10541
 ❯ Module.prototype.require ../../../blitz.7a1fe16d.js:55:13787
 ❯ i ../../../blitz.7a1fe16d.js:98:2198
 ❯ _0x5b8ff6 ../../../blitz.7a1fe16d.js:355:176557
 ❯ function ../../../blitz.7a1fe16d.js:355:177359
 ❯ Module.prototype._compile ../../../blitz.7a1fe16d.js:55:14883
 ❯ Module."] ../../../blitz.7a1fe16d.js:55:15564
 ❯ Module.prototype.load ../../../blitz.7a1fe16d.js:55:13469
 ❯ Module._load ../../../blitz.7a1fe16d.js:55:10541
 ❯ Module.prototype.require ../../../blitz.7a1fe16d.js:55:13787
 ❯ i ../../../blitz.7a1fe16d.js:98:2198
 ❯ _0x5b8ff6 ../../../blitz.7a1fe16d.js:355:176557
 ❯ function ../../../blitz.7a1fe16d.js:355:177359
 ❯ Module.prototype._compile ../../../blitz.7a1fe16d.js:55:14883
 ❯ Module."] ../../../blitz.7a1fe16d.js:55:15564
 ❯ Module.prototype.load ../../../blitz.7a1fe16d.js:55:13469
 ❯ Module._load ../../../blitz.7a1fe16d.js:55:10541
 ❯ Module.prototype.require ../../../blitz.7a1fe16d.js:55:13787
 ❯ i ../../../blitz.7a1fe16d.js:98:2198
 ❯ _0x5b8ff6 ../../../blitz.7a1fe16d.js:355:176557
 ❯ function ../../../blitz.7a1fe16d.js:355:177359
 ❯ Module.prototype._compile ../../../blitz.7a1fe16d.js:55:14883
 ❯ Module."] ../../../blitz.7a1fe16d.js:55:15564
 ❯ Module.prototype.load ../../../blitz.7a1fe16d.js:55:13469
 ❯ Module._load ../../../blitz.7a1fe16d.js:55:10541
 ❯ Module.prototype.require ../../../blitz.7a1fe16d.js:55:13787
 ❯ i ../../../blitz.7a1fe16d.js:98:2198
 ❯ _0x5b8ff6 ../../../blitz.7a1fe16d.js:355:176557
 ❯ function ../../../blitz.7a1fe16d.js:355:177359
 ❯ Module.prototype._compile ../../../blitz.7a1fe16d.js:55:14883
 ❯ Module."] ../../../blitz.7a1fe16d.js:55:15564
 ❯ Module.prototype.load ../../../blitz.7a1fe16d.js:55:13469
 ❯ Module._load ../../../blitz.7a1fe16d.js:55:10541
 ❯ Module.prototype.require ../../../blitz.7a1fe16d.js:55:13787
 ❯ i ../../../blitz.7a1fe16d.js:98:2198
 ❯ _0x5b8ff6 ../../../blitz.7a1fe16d.js:355:176557
 ❯ function ../../../blitz.7a1fe16d.js:355:177359
 ❯ Module.prototype._compile ../../../blitz.7a1fe16d.js:55:14883
 ❯ Module."] ../../../blitz.7a1fe16d.js:55:15564
 ❯ Module.prototype.load ../../../blitz.7a1fe16d.js:55:13469
 ❯ Module._load ../../../blitz.7a1fe16d.js:55:10541
 ❯ _evaluate ../../../blitz.7a1fe16d.js:355:352285
 ❯ evaluate ../../../blitz.7a1fe16d.js:355:351379
 ❯ run ../../../blitz.7a1fe16d.js:181:2390

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { fileName: 'https://vitejsvitecsquxp-q0nu.w-corp.staticblitz.com/blitz.7a1fe16d.js', lineNumber: 64, columnNumber: 14437, code: 'ERR_REQUIRE_ESM' }

Expected Result

Expect unit tests to pass when importing something from NebulaGL.

Reproduce Steps

https://stackblitz.com/edit/vitejs-vite-csquxp?file=package.json

Run npm run test in the terminal on Stackblitz

Screenshots

To Do List