'CoinGecko API: Can't resolve 'https' and Can't resolve 'querystring'
I'm just getting started with the CoinGecko API but the first call I made to /ping. It gives me the error Module not found: Error: Can't resolve 'https'. Any idea why is this happening? I'm doing it with react, here is the code:
project/src/App.js
import { useEffect } from 'react';
import axios from 'axios';
// import CoinGecko from 'coingecko-api/lib/CoinGecko';
const CoinGecko = require("coingecko-api");
function App() {
useEffect(() => {
const CoinGeckoClient = new CoinGecko();
async function pingAPI(){
const response = await CoinGeckoClient.ping();
console.log(response)
return response
}
pingAPI()
}, [])
return (
<div>Hello world</div>
)
}
export default App;
Here is the full stacktrace:
Compiled with problems:X
ERROR in ./node_modules/coingecko-api/lib/CoinGecko.js 3:14-30
Module not found: Error: Can't resolve 'https' in '/Users/romunoz/Documents/code/javascript/cryptoapp/node_modules/coingecko-api/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "https": require.resolve("https-browserify") }'
- install 'https-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "https": false }
ERROR in ./node_modules/coingecko-api/lib/CoinGecko.js 5:20-42
Module not found: Error: Can't resolve 'querystring' in '/Users/romunoz/Documents/code/javascript/cryptoapp/node_modules/coingecko-api/lib'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "querystring": require.resolve("querystring-es3") }'
- install 'querystring-es3'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "querystring": false }
Solution 1:[1]
https is a nodejs module so no, you need a backend for this.
If you don't want to have a backend then you don't need a wrapper and just use the api endpoints
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Jay Stance |
