Types are broken with CJS/Typescript
orgads opened this issue · 8 comments
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.
This should be fixed with v1.21.4
It's not fixed, sorry.
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.
Also getting typing errors while using v1.21.4 as mentioned here in this comment.
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:
and/or
import MockAdapter = require('axios-mock-adapter')
{ "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.
@remcohaszing It's fixed in v1.21.5. Thank you!
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.
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?