Skip to content

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

@keller-mark

Description

@keller-mark

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/*):

  • both does not contain "type": "module" and does not specify exports

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 visgl/deck.gl#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

  • Add label and assign to milestone
  • Coding
  • Test

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions