Estoy usando Express.JS (back-end) y React.js (front-end) para mi aplicación en Heroku. El siguiente código de Node.js funciona cuando estoy ejecutando mi aplicación localmente,
//code based off of: // https://medium.com/@dtkatz/3-ways-to-fix-the-cors-error-and-how-access-control-allow-origin-works-d97d55946d9 const express = require('express'); const request = require('request'); const app = express(); const apiKey = 'API-key'; app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', '*'); next(); }); app.get('/getCoinInfo', (req, res) => { console.log('The request has been received!!') request( { url: 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?CMC_PRO_API_KEY=' + apiKey}, (error, response, body) => { if (error || response.statusCode !== 200) { return res.status(500).json({ type: 'error', message: err.message }); } res.json(JSON.parse(body)); } ) }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => console.log(`listening on ${PORT}`));Pero no funciona cuando estoy implementando mi aplicación en heroku. Cuando consola.log mi respuesta en la versión de heroku me sale esto
Donde el "tipo" de solicitud es "básico" en lugar de "cors". Mi versión local funciona bien y un archivo console.log de la respuesta se ve así:
La única diferencia entre mi versión local de mi código y la versión de Heroku es que estoy enviando mi solicitud a una dirección diferente (la dirección de mi aplicación heroku en lugar de localhost3000)
const getData = async () => { let data = '' try { const req = `https://cryptoreactv2.herokuapp.com/getCoinInfo`; const response = await fetch(req); console.log(response) console.log(response.json()) data = await response.json() await console.log(data); await setApiData(data); await searchData(query); } catch(e) { console.log('Request could not be furfilled because of ' + e); } }