I have created a react app using create-react-app and an express server using express-generator. My react app is running on http://localhost:3000 and my express server is running on http://localhost:8080. In my component I am making a POST fetch request to my express server, which is successfully running my express router code, returning a 200 response status code. However, the client console logs the following error and does not receive the response:
Proxy error: Could not proxy request /components/findAlbumArt from localhost:3000 to http://localhost:8080.
See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ECONNRESET).
In the browser under the network tab I can see that the findAlbumArt request now has the status (canceled).
My react code:
import React, { Component } from "react";
class Search extends Component {
constructor(props) {
super(props);
this.state = { value: "" };
}
handleChange = (event) => {
this.setState({ value: event.target.value });
};
handleSubmit = async (event) => {
let response = await fetch("/components/findAlbumArt", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
value: this.state.value,
}),
});
response = await response.json();
this.props.setAlbumArt(response.albumArtUrl);
};
render() {
return (
<form onSubmit={this.handleSubmit}>
<label>
Find an album that you love:{" "}
<input
type="text"
value={this.state.value}
onChange={this.handleChange}
/>
</label>{" "}
<input type="submit" value="Submit" />
</form>
);
}
}
export default Search;
My express code:
const express = require("express");
const cache = require("../bin/cache/cache");
const axios = require("axios");
const router = express.Router();
router.post("/findAlbumArt", async (req, res, next) => {
res
.status(200)
.json({
albumArtUrl:
"https://i.scdn.co/image/ab67616d0000b2739feadc48ab0661e9b3a9170b",
});
// I commented out my other code to simply test returning a success response
});
module.exports = router;
Other relevant files:
app.js
const express = require("express");
const path = require("path");
const createError = require("http-errors");
const logger = require("morgan");
const cookieParser = require("cookie-parser");
const bodyParser = require("body-parser");
let app = express();
const indexRouter = require("./routes/index");
const componentsRouter = require("./routes/components");
// view engine setup
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "pug");
app.use(logger("dev"));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));
app.use("/components", componentsRouter);
app.use("/", indexRouter);
// catch 404 and forward to error handler
app.use(function (req, res, next) {
next(createError(404));
});
// error handler
app.use(function (err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get("env") === "development" ? err : {};
// render the error page
res.status(err.status || 500);
res.render("error");
});
module.exports = app;
express package.json
{
"name": "onboarding",
"version": "0.0.0",
"private": true,
"scripts": {
"dev": "nodemon ./bin/www",
"start": "node ./bin/www"
},
"dependencies": {
"async-redis": "^1.1.7",
"axios": "^0.19.2",
"body-parser": "^1.19.0",
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "~4.16.1",
"http-errors": "~1.6.3",
"morgan": "~1.9.1",
"pug": "2.0.0-beta11"
}
}
client package.json
{
"name": "client",
"version": "0.1.0",
"private": true,
"dependencies": {
"#testing-library/jest-dom": "^4.2.4",
"#testing-library/react": "^9.5.0",
"#testing-library/user-event": "^7.2.1",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-scripts": "3.4.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"proxy": "http://localhost:8080",
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
Any help would be greatly appreciated. Thank you!
Solved the problem myself actually. I was missing event.preventDefault(); in the handleSubmit() handler function.
The browser page was reloading when the submit button was clicked, causing the request to be canceled before completing.
Perhaps the window is being refreshed. Maybe forgot to prevent default behavior.
I was getting the same error when I was (purposely) refreshing a page for testing purposes. I removed the
window.location.reload(); command
and the proxy error disappeared.
just re-render the react component instead.
Related
I have an express server, which works locally, but when I deploy it to App Engine and send a request I get the response that it has been blocked by CORS policy. If I remove the section where I call exec (and move send response) there is no error.
Why could this be happening?
My code:
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const { exec } = require('child_process');
const app = express();
app.use(bodyParser.json());
app.use(cors());
module.exports = app
app.post("/", (req,res) =>{
console.log("Get from /");
console.log(req.body.data)
//IF I COMMENT EXEC OUT IT WORKS
exec('npx hardhat run scripts/deploy.js --network goerli',
(error, stdout, stderr) => {
if (error !== null) {
console.log(`exec error: ${error}`);
}
else{
res.send("response");
}
})
});
app.listen(8080, () => {
console.log('listening on port 8080');
});
This is my package.json:
{
"name": "hardhat-project",
"devDependencies": {
"#nomiclabs/hardhat-ethers": "^2.0.6",
"ethers": "^5.6.9",
"hardhat": "^2.9.9"
},
"version": "1.0.0",
"description": "smart contract",
"main": "hardhat.config.js",
"dependencies": {
"cors": "^2.8.5",
"express": "^4.18.1",
"firebase-admin": "^11.0.0"
},
"scripts": {
"start": "node src/index.js",
"test": "mocha"
},
"author": "",
"license": "ISC"
}
A screenshot of the error:
I'm trying to figure out a last assignment for my boot camp and am close to running out of time.
Heroku has an application error and I can't figure out how to fix it. I've tried deleting and reinstalling node modules, adding node and npm versions in my package.json, npm update, heroku restart, changing my PORT and have rewritten my connection and server files several times. I'm losing track of what I've tried. I think I might be missing something when it comes to MongoDB or Apollo, both of which I'm required to use, but I don't know what. I added keys to my .env and I don't know if I've done it wrong or something but it just won't work on Heroku. It works locally.
Here is my package.json currently.
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"start": "node server.js",
"watch": "nodemon server.js"
},
"keywords": [],
"author": "Wren Sanchez",
"license": "ISC",
"dependencies": {
"bcrypt": "^5.0.0",
"express": "^4.17.1",
"dotenv": "^16.0.1",
"graphql": "^15.5.0",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.9.10",
"apollo-server-express": "^3.6.1",
"nodemon": "^2.0.3"
},
"devDependencies": {
"nodemon": "^2.0.3"
}
}
My server.js
const { ApolloServer } = require("apollo-server-express");
const express = require('express');
const path = require('path');
const db = require('./config/connection');
const { typeDefs, resolvers } = require("./schemas");
const { authMiddleware } = require('./utils/auth');
require('dotenv').config();
const app = express();
const PORT = process.env.PORT || 3001;
const server = new ApolloServer({
typeDefs,
resolvers,
context: authMiddleware,
cache: "bounded",
});
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
if (process.env.NODE_ENV === 'production') {
app.use(express.static(path.join(__dirname, '../client/build')));
}
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, '../client/build/index.html'));
});
const startApolloServer = async (typeDefs, resolvers) => {
await server.start();
server.applyMiddleware({ app });
db.once("open", () => {
app.listen(PORT, () => {
console.log(`API server running on port ${PORT}!`);
console.log(
`Use GraphQL at http://localhost:${PORT}${server.graphqlPath}`
);
});
});
startApolloServer(typeDefs, resolvers);
}
My connection.js
const mongoose = require('mongoose');
require('dotenv').config({ path: '../.env' });
mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/googlebooks', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
module.exports = mongoose.connection;
And if useful, my repository: https://github.com/wrenvana/Book-Search-Engine
Any help is appreciated, we have been learning React and MERN at the very end and I've been having a hard time with it.
i make a social media in mern stack, and all is fine in development. But in production, i have a problem with my requests.
To explain better, first my problem was a cookie issue, i need a cookie to have the user logged in, and at first, the request was ok (code 200) but i haden't the cookie, and the user wasn't connected.
And now, after some changes to set the cookie, the request is not ok (error 400), it seems like the front don't communicate with the back. I don't see where can be my mistakes.
My app is hosted on heroku (back and front sides), and i buy a domain name, who is https://www.universegram.fr
I put below my development code, and after the changes i make for the production.
Development Code
Server.js
const app = express();
const PORT = process.env.PORT || 5000
const corsOptions = {
origin: "http://localhost:3000",
credentials: true,
"allowedHeaders": ["sessionId", "Content-Type"],
"exposedHeaders": ["sessionId"],
"methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
"preflightContinue": false
}
app.use(cors(corsOptions));
app.set("trust proxy", 1);
// Read bodys and cookies on our requests
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
// jwt middleware
app.get("*", checkUser);
app.get("/jwtid", requireAuth, (req, res) => {
res.status(200).send(res.locals.user._id)
});
// Routes
app.use("/api/user", userRoutes);
app.use("/api/post", PostRoutes);
// Server static assets if in production
if(process.env.NODE_ENV === "production"){
// Set static folder
app.use(express.static("client/build"))
app.get("*", (req, res) => {
res.sendFile(path.resolve(__dirname, "client", "build", "index.html"))
})
}
// Server
app.listen(PORT, () => {
console.log(`Server is running on ${process.env.PORT
}`);
})
AuthController.js (SignIn method)
module.exports.signIn = async (req, res) => {
const { email, password } = req.body;
try {
const user = await UserModel.login(email, password);
const token = createToken(user._id);
res.cookie("jwt", token, {
maxAge: maxAge,
sameSite: "lax",
// httpOnly: true,
secure: false,
})
res.status(200).json({ user: user._id })
}
catch (err) {
const errors = signInErrors(err);
res.status(400).json({ errors });
// console.log(err)
}
}
My package.json (Client side)
{
"name": "client",
"version": "0.1.0",
"private": true,
"homepage": "/",
"dependencies": {
"#testing-library/jest-dom": "^5.16.4",
"#testing-library/react": "^13.0.1",
"#testing-library/user-event": "^13.5.0",
"firebase": "^9.7.0",
"hamburger-react": "^2.5.0",
"particlesjs": "^2.2.3",
"react": "^18.0.0",
"react-burger-menu": "^3.0.6",
"react-dom": "^18.0.0",
"react-scripts": "5.0.1",
"sass": "^1.50.0",
"web-vitals": "^2.1.4"
},
"proxy": "http://localhost:5000",
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "craco eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"dotenv": "^16.0.0",
"js-cookie": "^3.0.1",
"react-redux": "^7.2.8",
"react-router-dom": "^6.3.0",
"reactjs-popup": "^2.0.5",
"redux": "^4.1.2",
"redux-devtools-extension": "^2.13.9",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.4.1"
}
}
Production changes
(Change origin)
const corsOptions = {
origin: "https://www.universegram.fr",
credentials: true,
"allowedHeaders": ["sessionId", "Content-Type"],
"exposedHeaders": ["sessionId"],
"methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
"preflightContinue": false
}
(Change cookie settings)
module.exports.signIn = async (req, res) => {
const { email, password } = req.body;
try {
const user = await UserModel.login(email, password);
const token = createToken(user._id);
res.cookie("jwt", token, {
maxAge: maxAge,
sameSite: "none",
// httpOnly: true,
secure: true,
})
res.status(200).json({ user: user._id })
}
catch (err) {
const errors = signInErrors(err);
res.status(400).json({ errors });
// console.log(err)
}
}
I try a lot of things but util now i don't find the good solution..Thanks in advance if you can help me
Thank you for your answer, i take a look and from my front-end, from my request, nothing, it come directly in the catch method. Here is my SignIn component:
const SignInForm = () => {
const { uid, setUid } = useContext(UidContext);
const navigate = useNavigate();
const dispatch = useDispatch();
// States to take the inputs values
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
// console.log(uid)
// Function to login the user or display the errors
const handleLogin = (e) => {
e.preventDefault();
const emailError = document.querySelector(".email.error");
const passwordError = document.querySelector(".password.error");
axios({
method: "post",
url: `/api/user/login`,
withCredentials: true,
data: {
email,
password
}
})
.then((res) => {
console.log(res)
if (res.data.errors) {
emailError.innerHTML = res.data.errors.email;
passwordError.innerHTML = res.data.errors.password;
}
else {
dispatch(getUser(res.data.user))
.then(() => dispatch(getUsers()))
.then(() => setUid(res.data.user))
.then(() => navigate("/home"))
}
// navigate("/home")
})
.catch((err) => {
console.log(err + "C'est chelou");
})
}
return (
<form action="" onSubmit={handleLogin} id="sign-up-form" >
<label htmlFor="email">Email</label>
<input type="text"
name="email"
id="email"
onChange={(e) => setEmail(e.target.value)}
value={email} />
<div className="email error"></div>
<br />
<label htmlFor="password">Mot de passe</label>
<input type="password"
name="password"
id="password"
onChange={(e) => setPassword(e.target.value)}
value={password} />
<div className="password error"></div>
<br />
<input type="submit" value="Se connecter" />
</form>
)
}
Been trying to deploy my create-react app (MERN stack) app to Heroku and having problems getting anything React related to display in Heroku. On my local computer it works perfectly fine. In Heroku however when I hit any route it just displays the json that I am serving from my back-end. The json has all my database information in it which tells me that my back-end and my MongoDB are hooked up and working correctly. However, no React components are being displayed. I have tried adding a static.json file, tinkered with heroku-postbuild scripts, and tinkered with different code in the server.js file that serves the static index.html file from other posts but with no success. Any help in getting my front-end to display in Heroku would be much much appreciated!
Link to my code in Github
github
Folder Structure
Client package.json
{
"name": "client",
"version": "0.1.0",
"private": true,
"proxy": "https://youth-sports.herokuapp.com",
"homepage": "https://youth-sports.herokuapp.com",
"dependencies": {
"#testing-library/jest-dom": "^5.14.1",
"#testing-library/react": "^11.2.7",
"#testing-library/user-event": "^12.8.3",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-router-dom": "^5.3.0",
"react-scripts": "4.0.3",
"web-vitals": "^1.1.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"node-sass": "^6.0.1"
}
}
Root/Server-side package.json
{
"name": "youth-sports",
"version": "1.0.0",
"description": "",
"main": "sever.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js",
"dev": "nodemon server.js",
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client"
},
"author": "Shaun Valentine",
"license": "ISC",
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^10.0.0",
"express": "^4.17.1",
"mongoose": "^6.0.12"
}
}
server.js file
require('dotenv').config();
const Players = require('./Model/playersModel.js'); //!Importing players model into backend for now to serve front-end React
const express = require('express');
const app = express();
const path = require('path');
const PORT = process.env.PORT || 5000;
const mongoose = require('mongoose');
const MONGODB_URI = process.env.MONGODB_URI;
const db = mongoose.connection;
mongoose.connect(MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
db.on('open', () => {
console.log('Mongo is Connected');
});
//? MIDDLEWARE
app.use(express.json());
if (process.env.NODE_ENV !== 'development') {
app.use(express.static('public'));
// app.use('/static', express.static(path.join(__dirname, 'build')));
}
// app.use(express.json());
// if (process.env.NODE_ENV === 'production') {
// // app.use(express.static('public'));
// app.use(express.static(path.join(__dirname, 'build')));
// }
const cors = require('cors');
app.use(cors());
app.use(express.urlencoded({ extended: true })); // Middleware - so we can use req.body otherwise Express can't read what's in the body of our POST request. This Middleware parses data from forms in the x-www-form-urlencoded format
app.use(express.json()); // Middleware - for parsing data coming in the body of the POST request as json format
//? GET REQUEST - INDEX ROUTE - SHOW ALL PLAYERS UPON HITTING THIS ROUTE
app.get('/players', async (req, res) => {
try {
const roster = await Players.find({});
res.json(roster);
} catch (error) {
res.status(400).json(error);
}
});
//? GET REQUEST - SHOW PAGE (INDIVIDUAL PLAYER)
app.get('/players/:id', async (req, res) => {
try {
const playerProfile = await Players.findById(req.params.id);
res.status(200).json(playerProfile);
console.log(playerProfile);
} catch (error) {
res.status(400).send(error);
}
});
//? POST REQUEST - CREATE ROUTE - POST NEW PLAYER DATA TO MONGODB FROM NEW PLAYER FORM ON NewPlayer.js file
app.post('/players', async (req, res) => {
try {
console.log(req.body);
await Players.create(req.body);
res.redirect('/players');
} catch (error) {
console.log(error);
}
});
app.get('/teams', async (req, res) => {
try {
await res.json({ message: 'Hello from server!!!' });
} catch (error) {
console.log(error);
}
});
app.get('*', (req, res) => {
res.sendFile(
path.resolve(path.join(__dirname, 'client', 'public', 'index.html'))
);
// res.sendFile(path.resolve(__dirname, 'build', 'index.html'));
// res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
app.listen(PORT, () => {
console.log(`Listening on PORT ${PORT} yo`);
});
App.js file (client file)
import './Sass/App.scss';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; //! MUST IMPORT BrowserRouter (changing name to just Router is optional) and Route and Switch
import NewPlayer from './Components/NewPlayer.js';
import Rosters from './Views/Rosters.js';
import PlayerProfile from './Views/PlayerProfile.js';
import Home from './Views/Home.js';
import './Sass/App.scss';
function App() {
return (
<div className="App">
<Router>
<Switch>
<Route exact path="/players">
<Rosters />
</Route>
<Route exact path="/players/new">
<NewPlayer />
</Route>
<Route exact path="/players/:id">
<PlayerProfile />
</Route>
<Route exact path="/">
<Home />
</Route>
</Switch>
</Router>
</div>
);
}
export default App;
static.json
{
"root": "build/",
"clean_urls": false,
"routes": {
"/**": "index.html"
}
}
Make the following updates.
We have to serve the static files of the build folder of the react-app to the server.
Root/Server-side package.json
{
"name": "youth-sports",
"version": "1.0.0",
"description": "",
"main": "sever.js",
"scripts": {
"start": "node server.js",
"heroku-postbuild": "npm run client-install && npm run client-build",
"client-install": "cd client && npm install",
"client-build": "cd client && npm run build"
},
"author": "Shaun Valentine",
"license": "ISC",
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^10.0.0",
"express": "^4.17.1",
"mongoose": "^6.0.12"
}
}
server.js file
require('dotenv').config();
const Players = require('./Model/playersModel.js'); //!Importing players model into backend for now to serve front-end React
const express = require('express');
const app = express();
const path = require('path');
const PORT = process.env.PORT || 5000;
const mongoose = require('mongoose');
const MONGODB_URI = process.env.MONGODB_URI;
const db = mongoose.connection;
mongoose.connect(MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
db.on('open', () => {
console.log('Mongo is Connected');
});
//? MIDDLEWARE
app.use(express.json());
if (process.env.NODE_ENV !== 'development') {
app.use(express.static('public'));
// app.use('/static', express.static(path.join(__dirname, 'build')));
}
const cors = require('cors');
app.use(cors());
app.use(express.urlencoded({ extended: true })); // Middleware - so we can use req.body otherwise Express can't read what's in the body of our POST request. This Middleware parses data from forms in the x-www-form-urlencoded format
app.use(express.json()); // Middleware - for parsing data coming in the body of the POST request as json format
//? GET REQUEST - INDEX ROUTE - SHOW ALL PLAYERS UPON HITTING THIS ROUTE
app.get('/players', async (req, res) => {
try {
const roster = await Players.find({});
res.json(roster);
} catch (error) {
res.status(400).json(error);
}
});
//? GET REQUEST - SHOW PAGE (INDIVIDUAL PLAYER)
app.get('/players/:id', async (req, res) => {
try {
const playerProfile = await Players.findById(req.params.id);
res.status(200).json(playerProfile);
console.log(playerProfile);
} catch (error) {
res.status(400).send(error);
}
});
//? POST REQUEST - CREATE ROUTE - POST NEW PLAYER DATA TO MONGODB FROM NEW PLAYER FORM ON NewPlayer.js file
app.post('/players', async (req, res) => {
try {
console.log(req.body);
await Players.create(req.body);
res.redirect('/players');
} catch (error) {
console.log(error);
}
});
app.get('/teams', async (req, res) => {
try {
await res.json({ message: 'Hello from server!!!' });
} catch (error) {
console.log(error);
}
});
app.listen(PORT, () => {
console.log(`Listening on PORT ${PORT} yo`);
});
According to online tutorials i ran npm run build in the react app and then pasted the build folder in the server directory but i think it is just serving the server side, i am unable to figure out the problem , please help me what is the error in its deployment
My index.js
const express = require("express");
const app = express();
const cors = require("cors");
const mongoose = require("mongoose");
const path = require("path")
const { MONGODB } = require("./config");
const model = require("./models/user");
const router = require("./Routes/auth");
const PORT = process.env.PORT || 8000;
/***********************************config ************************* */
mongoose.connect(MONGODB, { useNewUrlParser: true, useUnifiedTopology: true });
mongoose.connection.on("connected", () => {
console.log("connected to mongoDb");
});
/********************model imports ***************************/
const User = require("./models/user");
const Post = require("./models/post");
/********************************middlewares**************************** */
app.use(express.json());
app.use(cors());
app.use(router);
app.use(require("./Routes/posts"));
app.use(require("./Routes/user"));
/****code related to production of app***** */
app.use(express.static(path.join(__dirname, 'build')));
app.get('/*', (req, res) => {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
/**********************listening on server *********************** */
app.listen(PORT, (err) => {
if (err) {
return console.log(`Error: ${err}`);
}
console.log(`server running on port: ${PORT}`);
});
my package.json - server
{
"name": "instagram-clone",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"bcryptjs": "^2.4.3",
"cors": "^2.8.5",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.12.4",
"nodemon": "^2.0.7",
"path": "^0.12.7"
}
}
Github link: https://github.com/dhruv354/insta-app.git