Correct exports of the module for better module loading compatibility with node.js
Is your feature request related to a problem? Please describe.
This module exports a UMD module in the main field and it provides an ESM version through the module field in package.json. Node.js supports mixing CJS and ESM modules these days but this setup does not go well with using this module in node.js.
The module field are only used by bundlers. Its not supported by node.js. So when trying to use this module with node.js without bundling it will try to load the file references in the main field which is a UMD file that node.js does not understand either.
Iow; how the ESM version is exposed in this module is wrong according to node.js.
My problem with this is that this breaks SSR of Lit web components (I am using this module in a Lit web component) and it also breaks SSR in Nuxt it seems like. Using this module with Lit SSR is possible if it only where exported correctly.
Describe the solution you'd like
Set package.json to type: module and export the ESM as recommended by node.js: https://nodejs.org/api/packages.html#dual-commonjses-module-packages
Basically add:
"type": "module",
"exports": {
"import": "./dist/index.esm.js",
"require": "./dist/index.umd.js"
},
Describe alternatives you've considered
I don't think there is an alternative way of doing this.
I import the package like this, so I can build and preview my Nuxt project :
import * as MarkerClustererPackage from '@googlemaps/markerclusterer';
let markerCluster: MarkerClustererPackage.MarkerClusterer = new MarkerClustererPackage.MarkerClusterer({...});
This will happen with the next major release (since it's a breaking change), but I still can't say when that'll be. Did you find a workaround for the time being?
@usefulthink This is a breaking change because of the "type": "module" right?
For my use-case, just adding the "exports" field will help tsup and vitest find the ESM version of this package.
Could we make it a fix first, just for the exports and add the type module later for a major release?