axios: [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)

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 18
  • Comments: 48 (6 by maintainers)

Commits related to this issue

Most upvoted comments

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.

Please try the latest pre-release and let me know npm i axios@1.2.0-alpha.1

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

Still getting this issue when trying compiling from TS to JS. axios version 1.4.0 Any update on this?

It looks like you don’t need .default option anymore.

const axios = require('axios');
const client = axios.create({ ...});

this ^ worked for me

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)
   }
}

Please stay on 1.1.0 for now i need to come up with a solution that works for both commonJS and ESM

That’s especially an issue since the document says to use .default here

Will look into this asap

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

See #5030 merged should fix this.

@kob490 @noseratio I don’t believe this fix has been released yet. 1.1.3 is from several weeks ago.

Same issue post, spent quite some time on this. Version 1.1.0 works fine though

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?

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 😞

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 axios@0.27.2

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 axios@0.27.2” and it works fine.

+1 same here with 1.1.3 TS->JS

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.

Please try the latest pre-release and let me know npm i axios@1.2.0-alpha.1

This works!

I think this is related to (and should be fixed by) #5174. The fix should be released soon.

+1 here Update: changed to 1.1.0 and worked with

import axios, { AxiosInstance } from ‘axios’; this.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

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