googlemaps / googlemaps/js-markerclusterer

Correct exports of the module for better module loading compatibility with node.js

Open
#908 3 comments 6 reactions 0 assignees View on GitHub
next major: breaking change semver: major type: feature request
Dominant language
TypeScript
Stars
293
Forks
104
Avg merge
3m
Merged PRs (30d)
18

Description

**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](https://github.com/googlemaps/js-markerclusterer/issues/885) 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:

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

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.