Google does not make it clear in their documentation. After half a day of trying to modify everything that might help, I discovered that you need to share the file with the email described in your service account json file.
For example, I have a Google Slide file in my personal Google Drive, and I want it to be readable by Google Drive API, I'll have to share this Slide file with xxx@xxx.iam.gserviceaccount.com
listed in the json service account file.

Then the following code snippet should return the shared Slide file:
import {google} from 'googleapis'
const credentials = require("./credentials.json");
async function main() {
const scopes = [
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/presentations',
]
const auth = new google.auth.JWT(
credentials.client_email,
null,
credentials.private_key,
scopes,
)
const drive = google.drive({
version: 'v3',
auth
})
const res = await drive.files.list()
console.log(res.data)
}
main()
{
kind: 'drive#fileList',
incompleteSearch: false,
files: [
{
kind: 'drive#file',
id: 'xxxxx',
name: 'xxxxx',
mimeType: 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
},
]
}