Tell us what’s happening:
All my tests manually pass but when i enter the link i fail the last 3.
Your project link(s)
require('dotenv').config();
const express = require('express');
const cors = require('cors');
const app = express();
const dns = require("dns");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const { Schema } = mongoose;
mongoose.connect(process.env['MONGO_URI'], { useNewUrlParser: true, useUnifiedTopology: true });
let urlSchema = new Schema({
original_url: {type: String, required: true},
short_url: {type: String, required: true, default: 0}
});
let urldb = mongoose.model("urldb", urlSchema);
// Basic Configuration
const port = process.env.PORT || 3000;
app.use(cors());
app.use(bodyParser.urlencoded({extended: false}));
app.use('/public', express.static(`${process.cwd()}/public`));
app.get('/', function(req, res) {
res.sendFile(process.cwd() + '/views/index.html');
});
let id = 0;
// Your first API endpoint
app.post('/api/shorturl', function(req, res) {
const { url } = req.body;
const noHTTPSurl = url.replace(/^https?:\/\//, "");
dns.lookup(noHTTPSurl, (err) => {
if(err) {
return res.json({
error: "invalid url"
});
} else {
id++;
const link = {
original_url: "https://" + noHTTPSurl,
short_url: id
}
urldb.create(link, (err, data) => {
if(err) {
return console.log(err);
}
});
return res.json(link);
}
});
});
app.get('/api/shorturl/:id' , (req, res) => {
const { id } = req.params;
urldb.findOne({short_url: id}, function (err, data) {
if (err) {
res.json({
error: "invalid url"
});
}
else{
return res.redirect(data.original_url);
}
});
});
app.listen(port, function() {
console.log(`Listening on port ${port}`);
});
This error shows up when i run tasks
solution: boilerplate-project-urlshortener - Node.js Repl - Replit
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36 OPR/90.0.4480.117
Challenge: Back End Development and APIs Projects - URL Shortener Microservice
Link to the challenge: