MissingReferenceException even after checking if object is null

I have been learning Unity for a couple of weeks, and I am working on a prototype for a game.
I am trying to add death effects for the traps in the game (sounds and particles), but also have them rotate towards the Player. Since adding the particle effects, I get the MissingReferenceException error for all the traps in my scene. It sends me to Vector3 directionToTarget = target.transform.position - this.transform.position; I tried to verify if the object is not null, but I get the same result. The last two added voids are a desperate attempt to figure it out on my own. Can anyone help me figure out what I am doing wrong? Thank you in advance!
This is my messy code:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Trap : MonoBehaviour
{
    public ParticleSystem deathSpark;
    //public GameObject deathSpark;
    [SerializeField] private Transform target;

    private enum FollowType { Forward, Up, Right }

    // This is seperate for each cube in the inspector, so I can configure them accordingly
    [SerializeField] private FollowType follow;

    private void Update()
    {
        // Get the direction to the target by subtracting the target position by the current position.
        if (gameObject != null)
        {
            Vector3 directionToTarget = target.transform.position - this.transform.position;

            switch (follow)
            {
                case FollowType.Forward:
                    transform.forward = directionToTarget;
                    break;
                case FollowType.Up:
                    transform.up = directionToTarget;
                    break;
                case FollowType.Right:
                    transform.right = directionToTarget;
                    break;
                default:
                    break;
            }
        }
    }
    private void OnTriggerEnter(Collider other)
    {
        if ((gameObject != null) && gameObject.CompareTag("BoHead"))
        {
            SoundManagerScript.PlaySound("Heavy Object Impact 4");
            Instantiate(deathSpark, transform.position, Quaternion.identity);
            CreateExplosion();
            //Instantiate(deathSpark, transform.position, transform.rotation);
            //Destroy(gameObject);
            
        }
    }
    void CreateExplosion()
    {
        if (gameObject != null)
        {
            Instantiate(deathSpark, transform.position, Quaternion.identity);
            deathSpark.Play();
        }
    }

    public void Destroy()
    {
        if (gameObject != null)
        {
            SoundManagerScript.PlaySound("Heavy Object Impact 4");
            Instantiate(deathSpark, transform.position, Quaternion.identity);
           
        }   
    }
}

Nevermind, I solved it. The problem was not the particles, but that the traps were following the player, so upon player death, I set it to destroy gameObject. I temporarily rewrote the player script to just restart the level, and it worked. I am leaving this here, along with where I found the solution. We really should get used to solving this error fast, because it is very easy to encounter it. Here is where I found the idea:

@NitroGain Thank you. I saw your answer in the post above and it helped me.