axios
axios copied to clipboard
[1.0.0] TypeError: Cannot read properties of undefined (reading 'create')
Describe the bug
const client = axios.create()
^
TypeError: Cannot read properties of undefined (reading 'create')
at Object.<anonymous> (/Users/rob/Developer/Personal/full-feed/test.js:5:22)
at Module._compile (node:internal/modules/cjs/loader:1149:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1203:10)
at Module.load (node:internal/modules/cjs/loader:1027:32)
at Module._load (node:internal/modules/cjs/loader:868:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47
Node.js v18.10.0
To Reproduce
#!/usr/bin/env node
const axios = require('axios').default
const client = axios.create()
Expected behavior
Runs without error.
Environment
- Axios 1.0.0
- Node.js 18.10.0
- macOS Monterey 12.6
Additional context/Screenshots
- 0.27.2: runs without error
- 1.0.0:
TypeError: Cannot read properties of undefined (reading 'create')
(I could not see any breaking change)
Same issue with get
:
/home/gui/sambashare/scripts/axios-test.js:4
const res = await axios.get(`<url>`, {
^
TypeError: Cannot read properties of undefined (reading 'get')
with:
const axios = require('axios').default
const main = async () => {
await axios.get('<url>')
}
main()
That is a major breaking change
I am getting similar error
Uncaught TypeError: axios.create is not a function
at eval (api.js:5:1)
My code is - instance:
const axios = require('axios');
const { gateway } = require('../config/environment');
const { version } = require('../../package.json');
const api = axios.create({
baseURL: gateway,
headers: {
'Content-Type': 'application/json; charset=UTF-8',
'Cache-Control': 'no-cache',
Pragma: 'no-cache',
'X-Application-Name': 'app-name',
'X-Application-Version': version
}
});
api.interceptors.response.use(
(response) => response.data,
(error) => { throw error; }
);
module.exports = { api };
And request, for example:
const { api } = require('../config/api');
const getSomeEndpoint = (data) => (
api.post('endpoint', data)
);
module.exports = { getSomeEndpoint };
I am not sure where is the problem, I can't find it in my code 😞
That's especially an issue since the document says to use .default
here
I am getting similar error
Uncaught TypeError: axios.create is not a function at eval (api.js:5:1)
My code is - instance:
const axios = require('axios'); const { gateway } = require('../config/environment'); const { version } = require('../../package.json'); const api = axios.create({ baseURL: gateway, headers: { 'Content-Type': 'application/json; charset=UTF-8', 'Cache-Control': 'no-cache', Pragma: 'no-cache', 'X-Application-Name': 'app-name', 'X-Application-Version': version } }); api.interceptors.response.use( (response) => response.data, (error) => { throw error; } ); module.exports = { api };
And request, for example:
const { api } = require('../config/api'); const getSomeEndpoint = (data) => ( api.post('endpoint', data) ); module.exports = { getSomeEndpoint };
I am not sure where is the problem, I can't find it in my code 😞
Yes, this form is functional, but you don't have the helpers either the types. When you use default the method create return undefined, this is the reason of the error.
@gdelory, @Angros23
With .default
app is working correctly, but during the build it crashes.
I am using gatsby
and during the build I do the first requests.
(I have build app without default, It passed, and then added default and reloaded, then was OK, but still when I try to build once again, the app not built) 😞
gatsby-node.js: TypeError: Cannot read properties of undefined (reading 'create')
Before the upgrade to 1.0.0
it was working correctly without default
.
Will look into this asap
Will look into this asap
@jasonsaayman Thank you, I'm also checking, if it is not a problem with Gatsby. Tell me if there is something I can do to help
See #5030 merged should fix this.
@jasonsaayman works like a dream, thank you!
Please stay on 1.1.0 for now i need to come up with a solution that works for both commonJS and ESM
Getting this error with Node.js
Import: const axios = require('axios').default;
Error: axios.defaults.withCredentials = true; TypeError: Cannot read properties of undefined (reading 'defaults')
But really it's just erroring everywhere because 'axios' is not defined: await axios.post(endpoint, params, config); TypeError: Cannot read properties of undefined (reading 'post')
I rolled back with "npm install [email protected]" and it works fine.
It looks like you don't need .default
option anymore.
const axios = require('axios');
const client = axios.create({ ...});
this ^ worked for me
@womprat for that the latest version should work if you drop the .default
I've noticed that...
import axios from 'axios';
...will reproduce this error, so you need to use:
const axios = require('axios');
Which is maybe something that should be fixed?
Removing .default
will work fine but will cause TS errors
With 1.1.3 and TS, this code:
import axios from 'axios';
const axiosClient = axios.create();
is transpiled to:
const axios_1 = require("axios");
const axiosClient = axios_1.default.create();
and it fails.
@orgads thanks I will have a look
Same issue with post
looking for a solution for typescript users. require is still required
Works great if you put the past version.
npm install [email protected]
Same issue post, spent quite some time on this. Version 1.1.0 works fine though
To write a program I installed Axios with npm install --save axios
, which installed v1.1.3, then in index.js I wrote some code using axios.create
, and it seems Visual Studio code autocompleted the import statement for me to incorrectly be const { default: axios } = require("axios");
, so when I ran my program I got error [TypeError: Cannot read properties of undefined (reading 'create')
. To fix it I used the same version and just changed the line manually to simply const axios = require("axios");
I am also able to reproduce this issue via following method
Sample TS Code
import axios from "axios
axios.get("http://some-api")
Now after compiling this code
tsc my-code.ts
node my-code.js
We will get the following error
Cannot read properties of undefined (reading 'get')
Now the only work around is to switch back to version 1.1.0
I am also able to reproduce this issue via following method
Sample TS Code
import axios from "axios axios.get("http://some-api")
Now after compiling this code
tsc my-code.ts node my-code.js
We will get the following error
Cannot read properties of undefined (reading 'get')
Now the only work around is to switch back to version 1.1.0
Same issue Tried 1.1.0 and 1.1.3
import axios from axios
axios.create
Same issue here, axios.create
results in TypeError: Cannot read properties of undefined (reading 'create')
Had to switch back to 1.1.0 - huge breaking change
following
For Node.js projects without TS, this hack will work fine.
const axios = require('axios').default || require('axios')
The first require()
let VSCode show autocomplete when typing, and the second one will be used at runtime.
With 1.1.3 and TS, this code:
import axios from 'axios'; const axiosClient = axios.create();
is transpiled to:
const axios_1 = require("axios"); const axiosClient = axios_1.default.create();
and it fails.
I have even tried to check using earlier version(0.27.1, 0.27.2, 1.0.0), looks like issue is still persits.
this is still an issue with version 1.1.3 on TypeScript. the Axios instance is being created but I get the following error
TypeError: Cannot read properties of undefined (reading 'isAxiosError')
when catching and testing an error message with
axios.isAxiosError(err)
my simplified code is
import axios from 'axios'
try{
const response = await axios.get(url);
console.log(response.data);
}
catch (err){
if (axios.isAxiosError(err)) {
console.error(err.message)
} else {
console.error(err)
}
}
Can confirm, still an issue with 1.1.3. I thought I might be doing something dumb but ended up here by while searching.
@kob490 @noseratio I don't believe this fix has been released yet. 1.1.3 is from several weeks ago.
+1 here Update: changed to 1.1.0 and worked with
import axios, { AxiosInstance } from 'axios'; this.axios = axios.create();