X-Press publishing (step 35) passes tests, site unresponsive (NOT a PORT issue most likely!)

I have the same issue as the user in this thread:

However I discovered that the PORT was not the issue.
When I access the page, this is logged:

GET /api/series 404 8.242 ms - 149
made it to the get (all) router
GET /api/artists 200 7.229 ms - 227

so far so good, except none of the artists in the table appear on the page. The second line indicates that the server did indeed use the GET router. (edit: it indicates this because I put a console.log there that runs if the GET router is accessed) I cannot test the PUT or DELETE functions, as no Artists ever appear on the page.
When I try to save a new artist, I get this:

OPTIONS /api/artists 200 1.493 ms - 13

I made a console.log in the Artists POST router that is similar to the one in the GET router, but it wasn’t logged here, which indicates that the POST router was not accessed at all. I cannot pass the GET by ID function for the same reason.
I pass all tests up to this point related to the artists router.

Here is my server.js:

//requiring dependencies
const bodyParser = require('body-parser');
const cors = require('cors');
const errorhandler = require('errorhandler');
const morgan = require('morgan');
const express = require('express');
const apiRouter = require('./api/api.js');
//creating the server
const app = express();
//passing the server through our processing middleware and whatnot
app.use(bodyParser.json());
app.use(errorhandler());
app.use(morgan('dev'));
//the juicy bits
app.use('/api',apiRouter);
//here we go!
const PORT = process.env.PORT || 4000;
//const PORT = 4000;
app.listen(PORT, () => {
    console.log(`App is listening on port ${PORT}`);
});

module.exports = app;

, my api.js

//get our prerequisites in order
const express = require('express');
const artistsRouter = require('./artists');
//get our router up and running
const apiRouter = express();
apiRouter.use('/artists',artistsRouter);


module.exports = apiRouter;

and my artists.js

//get our prerequisites in order
const express = require('express');
const sqlite3 = require('sqlite3');
//get our database in place
const db = new sqlite3.Database(process.env.TEST_DATABASE || './database.sqlite')
//get our router up and running
const artistsRouter = express();
//GET all the artists
artistsRouter.get('/', (req,res,next)=>{
    console.log('made it to the get (all) router');
    db.all("SELECT * FROM Artist WHERE Artist.is_currently_employed = 1",(error, rows)=>{
        if(error){
            next(error);
        } else {
            res.status(200).json({artists:rows});
        }
    })
})
//boilerplate stuffy stuff for getting an artist by ID
artistsRouter.param('artistId', (req, res, next, artistId) => {
    db.get("SELECT * FROM Artist WHERE id = $id",{$id:artistId},(error, artist) => {
        if (error){
            next(error);
        } else if(artist){
                req.artist = artist;
                next();
            } else {
                res.sendStatus(404);
            }
        }
)
});
//GET an artist by ID
artistsRouter.get('/:artistId', (req, res, next) => {
    res.status(200).json({artist:req.artist})
})
//POST an artist
artistsRouter.post('/', (req, res, next) => {
    console.log('made it to the POST router');
    const name = req.body.artist.name;
    const dateOfBirth = req.body.artist.dateOfBirth;
    const biography = req.body.artist.biography;
    let employment = req.body.artist.is_currently_employed; 
    console.log('after let employment')
    if (!name || !dateOfBirth || !biography){
        res.status(400).send();
    } else {
        if(!employment){
            employment = 1;
        }
        const sql = 'INSERT INTO Artist (name, date_of_birth, biography, is_currently_employed) VALUES ($name, $dateOfBirth, $biography, $isCurrentlyEmployed)';
        const values = {
          $name: name,
          $dateOfBirth: dateOfBirth,
          $biography: biography,
          $isCurrentlyEmployed: employment
        };
         
        db.run(sql, values, function(error) {
            if (error) {
                next(error);
            } else {
                db.get(`SELECT * FROM Artist WHERE Artist.id = ${this.lastID}`, (error, artist) =>{
                    res.status(201).json({artist:artist})
                })
            }
        });
        
    }
});
// PUT (AKA modify) an artist
artistsRouter.put('/:artistId', (req, res, next) => {
    const name = req.body.artist.name;
    const dateOfBirth = req.body.artist.dateOfBirth;
    const biography = req.body.artist.biography;
    let employment = req.body.artist.is_currently_employed; 
    console.log('after let employment')
    if (!name || !dateOfBirth || !biography){
        res.status(400).send();
    } else {
        if(!employment){
            employment = 1;
        }

        const sql = 'UPDATE Artist SET name = $name, date_of_birth = $dateOfBirth, biography = $biography, is_currently_employed = $isCurrentlyEmployed WHERE Artist.id = $artistId ';
        const values = {
            $name: name,
            $dateOfBirth: dateOfBirth,
            $biography: biography,
            $isCurrentlyEmployed: employment,
            $artistId: req.params.artistId
        };
        db.run(sql, values, function(error){
            if(error){
                next(error);
            } else {
                db.get(`SELECT * FROM Artist WHERE Artist.id = ${req.params.artistId}`, function(error, artist){
                    res.status(200).json({artist:artist});
                })
            }
        })
    }

});
//DELETE an artist (AKA mark them as unemployed)
artistsRouter.delete('/:artistId', (req, res, next) => {
    const artistId = req.params.artistId;
    const sql = 'UPDATE Artist SET is_currently_employed = 0 WHERE Artist.id = $artistId';
    const values = {$artistId: artistId};
    db.run(sql, values, function(error){
        if(error){
            next(error);
        } else {
            db.get(`SELECT * FROM Artist WHERE Artist.id = ${artistId}`, function(error, artist){
                res.status(200).json({artist:artist});
            })
        }
    })
})
module.exports = artistsRouter;

One thing to note is I did use this method to install SQLite3, as it was the only way that worked for me:

Not sure whether or not that would cause an issue though, as everything seems to run smooth, besides the site appearing nonresponsive.

Thanks in advance to anyone who is able to figure this out!

UPDATE:
I found the problem
I had failed to call

app.use(cors())

and that conflicted with the front-end.
Silly me.