eventListener works within HTML file but not .js file (Drum Kit project)

I am working on this project https://www.youtube.com/watch?v=VuN8qwZoego to make a drum kit using Vanilla JS.

Everything has worked thus far, except the last step of removing a transition using an eventListener. In the tutorial the javascript code is within script tags in the HTML file, but I wanted to practice using an externally linked .js file. I think this is causing an issue with the last function to remove the transition, but I can’t pinpoint why it doesn’t work. HTML/CSS and JS below:

<pre><code>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Drum Kit</title>
    <link rel="stylesheet" href="style.css">
    <script src="index.js"></script>
</head>
<body>
    <div class = "keys">
        <div data-key = "65" class = "key">
            <kbd>A</kbd>
            <span class = "sound">clap</span>
        </div>
        <div data-key = "83" class = "key">
            <kbd>S</kbd>
            <span class = "sound">hihat</span>
        </div>
        <div data-key = "68" class = "key">
            <kbd>D</kbd>
            <span class = "sound">kick</span>
        </div>
        <div data-key = "70" class = "key">
            <kbd>F</kbd>
            <span class = "sound">openhat</span>
        </div>
        <div data-key = "71" class = "key">
            <kbd>G</kbd>
            <span class = "sound">boom</span>
        </div>
        <div data-key = "72" class = "key">
            <kbd>H</kbd>
            <span class = "sound">ride</span>
        </div>
        <div data-key = "74" class = "key">
            <kbd>J</kbd>
            <span class = "sound">snare</span>
        </div>
        <div data-key = "75" class = "key">
            <kbd>K</kbd>
            <span class = "sound">tom</span>
        </div>
        <div data-key = "76" class = "key">
            <kbd>L</kbd>
            <span class = "sound">tink</span>
        </div>
    </div>

    <audio data-key="65" src="sounds/clap.wav"></audio>
    <audio data-key="83" src="sounds/hihat.wav"></audio>
    <audio data-key="68" src="sounds/kick.wav"></audio>
    <audio data-key="70" src="sounds/openhat.wav"></audio>
    <audio data-key="71" src="sounds/boom.wav"></audio>
    <audio data-key="72" src="sounds/ride.wav"></audio>
    <audio data-key="74" src="sounds/snare.wav"></audio>
    <audio data-key="75" src="sounds/tom.wav"></audio>
    <audio data-key="76" src="sounds/tink.wav"></audio>

    
    
    
</body>
</html>
</pre></code>

<pre><code>

window.addEventListener('keydown', function(e) {
    const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
    const key = document.querySelector(`.key[data-key="${e.keyCode}"]`);
    if(!audio) return; // stops the function completely
    audio.currentTime = 0;
    audio.play();
    key.classList.add('playing');
});

document.addEventListener('DOMContentLoaded', function(){
function removeTransition(e) {
    if (e.propertyName !== 'transform') return;
    e.target.classList.remove('playing');
  }})


const keys = document.querySelectorAll('.key');
keys.forEach(key => key.addEventListener('transitionend', removeTransition));

</pre></code>

<pre>

html {
  font-size: 10px;
  background: url('./background.jpg') bottom center;
  background-size: cover;
}

body,html {
  margin: 0;
  padding: 0;
  font-family: sans-serif;
}

.keys {
  display: flex;
  flex: 1;
  min-height: 100vh;
  align-items: center;
  justify-content: center;
}

.key {
  border: .4rem solid black;
  border-radius: .5rem;
  margin: 1rem;
  font-size: 1.5rem;
  padding: 1rem .5rem;
  transition: all .07s ease;
  width: 10rem;
  text-align: center;
  color: white;
  background: rgba(0,0,0,0.4);
  text-shadow: 0 0 .5rem black;
}

.playing {
  transform: scale(1.1);
  border-color: #ffc600;
  box-shadow: 0 0 1rem #ffc600;
}

kbd {
  display: block;
  font-size: 4rem;
}

.sound {
  font-size: 1.2rem;
  text-transform: uppercase;
  letter-spacing: .1rem;
  color: #ffc600;
}