The spot light in three.js is a so called targeted light. That means its target property defines the direction of the light. target is an instance of Object3D and its position at (0,0,0) by default.
For your use case, I suggest you add the light and the target to the camera as a child (what you already do) and then translate the target a bit along the negative z axis. In this way, the spot light will always “look” along the current viewing direction of the player.