ajaishankar / openapi-typescript-fetch

A typed fetch client for openapi-typescript
MIT License
233 stars 54 forks source link

CommonJS and ESM lack appropriate extensions #41

Open javiertury opened 2 years ago

javiertury commented 2 years ago

Using this library with vite and pre-render, produces the following error:

[vite-plugin-ssr:autoFullBuild] Named export 'Fetcher' not found. The requested module 'openapi-typescript-fetch' is a CommonJS module, which may not support all module.exports as named exports.

The reason is that both CommonJS and ESM exports are using the .js extension. If package.json#type is commonjs (default), .js can be used for CommonJS but .mjs should be used for ESM. And if package.json#type is module, .js can be used for ESM output, but .cjs should be used for CommonJS.

I think "type": "module" is better because the .js extension can be used for NodeJS modules and browsers alike, making mandatory .cjs only for CommonJS files.

ThaDaVos commented 2 years ago

Having the same issue - cannot use the library because it throws the above error

cuppachino commented 1 year ago

I've tried fixing this in my fork. It would be great to know if it works. If someone can verify I'll open a PR. It's temporarily published on npm (scoped)

brandonp-ais commented 1 year ago

@cuppachino

I've tested this on my work SvelteKit TS 5.0 application and it's working perfectly.

I'd previously had to set ssr: { format: 'cjs' } in vite.config.ts because of this one issue. I no longer have to, plus it's playing nice with Typescript 5.0. Bravo!