TypeError [ERR_INVALID_ARG_TYPE]: The "original" argument must be of type Function. Received type undefined

First of all no need to use return db; inside new Promise() because it is not expecting any return value from the callback function.

Since getDB() is an asynchronous function, it needs to be used with await keyword to get the value or will be available in handler function of .then.

It doesn't make sense to me that you are calling getDB() multiple times.

It is better to read if instead of directly assigning an anonymous function to exports object key like this exports.get = async function() and then use it from exports object for use in same file, it would be better to define a named get function and then use it as well as export it.

You are using reject and resolve keywords outside new promise() constructor which is not possible.

I have rewritten your code, I am not sure if I have missed anything, but do take a look and please inform if you are still facing any issues.

const sqlite3 = require("sqlite3").verbose();
const util = require("util");

async function getDB() {
  return new Promise(function(resolve, reject) {
    let db = new sqlite3.Database("./project.db", err => {
      if (err) {
        console.error(err.message);
        reject(err);
      } else {
        console.log("Connected to the project database.");
        resolve(db);
      }
    });
  });
}

try {
  // run these statements once to set up the db
  let db = await getDB();
  db.run(
    `CREATE TABLE services(id INTEGER PRIMARY KEY, service text, date text)`
  );
  db.run(
    `INSERT INTO services(id, service, date) VALUES (1, 'blah', '01-23-1987')`
  );
} catch (err) {
  console.log(err);
}

const db = await getDB();
const dbGetAsync = util.promisify(db.get);

async function get(service) {
  let sql = `SELECT Id id, Service service, Date date FROM services WHERE service  = ?`;

  try {
    const row = await dbGetAsync(sql, [service]);
    let this_row = { row: row.id, service: row.service };
    this_row
      ? console.log(row.id, row.service, row.date)
      : console.log(`No service found with the name ${service}`);
    return row;
  } catch (err) {
    console.error(err.message);
  }
}

let row = await get("blah");

exports.get = get;

getDB is an async function returning a Promise, so you have to await for the promise to resolve or chain a then to use its returned value:

// you have to put it inside an async function
const db = await getDB();
const dbGetAsync = util.promisify(db.get);
getDB().then(function(db){
  return util.promisify(db.get);
}).then(function(getFunction){
  // use get
})

I got this error because I was using an old Node version (8.17.0), updating Node to a newer version (12.14.0) fixed this error.