Social network for developers
This is a MERN stack application from the "MERN Stack Front To Back" course on Udemy. It is a small social network app that includes authentication, profiles and forum posts.
Such is the nature of software, things change frequently and packages are continuously evolving. Hopefully the below will help you adjust your course code to manage the most notable changes.
Since the course was published, GitHub has depreciated authentication via URL query parameters You can get an access token by following these instructions For this app we don't need to add any permissions so don't select any in the scopes. DO NOT SHARE ANY TOKENS THAT HAVE PERMISSIONS This would leave your account or repositories vulnerable, depending on permissions set.
It would also be worth adding your default.json
config file to .gitignore
If git has been previously tracking your default.json
file then...
git rm --cached config/default.json
Then add your token to the config file and confirm that the file is untracked with git status
before pushing to GitHub.
GitHub does have your back here though. If you accidentally push code to a repository that contains a valid access token, GitHub will revoke that token. Thanks GitHub ๐
You'll also need to change the options object in routes/api/profile.js
where we make the request to the GitHub API to...
const options = {
uri: encodeURI(
`https://api.github.com/users/${req.params.username}/repos?per_page=5&sort=created:asc`
),
method: 'GET',
headers: {
'user-agent': 'node.js',
Authorization: `token ${config.get('githubToken')}`
}
};
As of 11th February 2020 request has been depreciated and is no longer maintained. We already use axios in the client so we can easily change the above fetching of a users GitHub repositories to use axios.
Install axios in the root of the project
npm i axios
We can then remove the client installation of axios.
cd client
npm uninstall axios
Client use of the axios module will be resolved in the root, so we can still use it in client.
Change the above GitHub API request to..
const uri = encodeURI(
`https://api.github.com/users/${req.params.username}/repos?per_page=5&sort=created:asc`
);
const headers = {
'user-agent': 'node.js',
Authorization: `token ${config.get('githubToken')}`
};
const gitHubResponse = await axios.get(uri, { headers });
You can see the full change in routes/api/profile.js
The npm package uuid no longer has a default export, so in our client/src/actions/alert.js we need to change the import and use of this package.
change
import uuid from 'uuid';
to
import { v4 as uuidv4 } from 'uuid';
And where we use it from
const id = uuid();
to
const id = uuidv4();
{
"mongoURI": "<your_mongoDB_Atlas_uri_with_credentials>",
"jwtSecret": "secret",
"githubToken": "<yoursecrectaccesstoken>"
}
npm install
cd client
npm install
npm run dev
cd client
npm run build
NODE_ENV=production node server.js
Check in browser on http://localhost:5000/
Brad Traversy Traversy Media
2.0.0
This project is licensed under the MIT License