Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Types are broken with CJS/Typescript #371

Closed
orgads opened this issue Apr 3, 2023 · 8 comments · Fixed by #372
Closed

Types are broken with CJS/Typescript #371

orgads opened this issue Apr 3, 2023 · 8 comments · Fixed by #372

Comments

@orgads
Copy link

orgads commented Apr 3, 2023

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 fd982cd, 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
Copy link
Collaborator

This should be fixed with v1.21.4

@orgads
Copy link
Author

orgads commented Apr 13, 2023

It's not fixed, sorry.

@marcbachmann marcbachmann reopened this Apr 13, 2023
@keshavbahadoor
Copy link

keshavbahadoor commented May 31, 2023

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
Copy link

mgrejanin commented Jun 14, 2023

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

@remcohaszing
Copy link
Contributor

Thanks for pinging me in the other issue @mgrejanin.

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

  • For libraries or Node.js applications:
    import MockAdapter = require('axios-mock-adapter')
    and/or
    {
      "compilerOptions": {
        "module": "node16"
      }
    }
  • For web applications:
    {
      "compilerOptions": {
        "module": "esnext",
        "moduleResolution": "bundler",
        "esModuleInterop": true
      }
    }

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

@mgrejanin
Copy link

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

@buronix
Copy link

buronix commented Jun 20, 2023

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
Copy link
Contributor

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants