Ok i finally solved the challenge thanks to another user’s solution ! 
Now it works.
The code:
require('dotenv').config();
const express = require('express');
const cors = require('cors');
const mongodb = require('mongodb');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
const dns = require('dns');
//const URL = require('url').URL;
const { nanoid } = require('nanoid');
const MONGO_URI="mongodb+srv://BarabbaFDM:" + process.env['PW'] + "@cluster0.43tgt.mongodb.net/db1?retryWrites=true&w=majority";
mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true });
// Basic Configuration
const port = process.env.PORT || 3000;
app.use(cors());
app.use('/public', express.static(`${process.cwd()}/public`));
app.get('/', function(req, res) {
res.sendFile(process.cwd() + '/views/index.html');
});
//Schema and model to store saved URLS
var ShortURL = mongoose.model('ShortURL', new mongoose.Schema({
original_url: String,
short_url: String,
}));
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
let urlExtractor = function(url) {
var urlSplit = url.split("https://");
if (urlSplit[1] == undefined) {
return urlSplit[0].split("/")[0];
} else {
return urlSplit[1].split("/")[0];
}
};
//Post data to the server, request URL, check if it is valid,
//send the shortened url to DB
app.post("/api/shorturl/", (req, res, next) => {
let original_url = req.body.url;
let extractedUrl = urlExtractor(original_url);
/*//Variable for dns.lookup
let newURL;
try{
newURL = new URL(original_url);
} catch (err){
return res.json({
error: "invalid url"
});
}*/
//Validate URL
dns.resolveAny(extractedUrl, (err) => {
if (err) {
res.json({
error: 'invalid url'
});
} else {
let short_url = nanoid()
//Create an object and save it to the DB
let newURL = new ShortURL({
original_url: original_url,
short_url: short_url
});
newURL.save((err, data) => {
if (err) return console.error(err);
});
res.json({
original_url: original_url,
short_url: short_url
});
};
});
});
app.get("/api/shorturl/:short_url", (req, res) => {
let short_url = req.params.short_url;
ShortURL.findOne({short_url: short_url}, (err, data) => {
if (err) return console.log(err);
res.redirect(301, data.original_url);
});
});
// Your first API endpoint
app.get('/api/hello', function(req, res) {
res.json({ greeting: 'hello API' });
});
app.listen(port, function() {
console.log(`Listening on port ${port}`);
});
Thank you very much for your availability!