ctimmerm / axios-mock-adapter

Axios adapter that allows to easily mock requests
MIT License
3.47k stars 245 forks source link

Types are broken with CJS/Typescript #371

Closed orgads closed 1 year ago

orgads commented 1 year ago
import MockAdapter from 'axios-mock-adapter';

This is transpiled into:

const axios_1 = require("axios");
const axios_mock_adapter_1 = require("axios-mock-adapter");
// ...
const mockAxios = new axios_mock_adapter_1.default(axios_1.default);

Following the changes in fd982cd0fc, this no longer builds.

error TS1259: Module '".../node_modules/axios-mock-adapter/types/index"' can only be default-imported using the 'esModuleInterop' flag
index.d.ts(81, 1): This module is declared with 'export =', and can only be used with a default import when using the 'esModuleInterop' flag.
marcbachmann commented 1 year ago

This should be fixed with v1.21.4

orgads commented 1 year ago

It's not fixed, sorry.

keshavbahadoor commented 1 year ago

We're experiencing this issue as well. What I have noticed is that I'm getting the above error on a MacBook M2 machine, yet it works fine on Intel machines.

Upgrading to v1.21.4 did not work.

Edit: (Update) - Rolling back to version 1.21.2 works fine.

mgrejanin commented 1 year ago

Also getting typing errors while using v1.21.4 as mentioned here in this comment.

remcohaszing commented 1 year ago

Thanks for pinging me in the other issue @mgrejanin.

If you run into this, this probably means you should use one of these:

However, since MockAdapter has a static property default, using a default import should technically work as well. This is fixed by #372.

mgrejanin commented 1 year ago

@remcohaszing It's fixed in v1.21.5. Thank you!

buronix commented 1 year ago

Not sure, but I´m using v1.21.5 and have the exact same problems. I´m not sure, but I´m pretty sure that my typescript version is constantly confusing MockAdapter as a class and namespace. Is there any reason why the types namespace and class name should be exactly the same? eslint is confuse, typescript is confuse, even I´m confuse about it.

remcohaszing commented 1 year ago

By using the same name for the namespace and the value, it's possible to export types in a project that uses module.exports =. :)

What's not working for you? Can you make a public reproduction?