Nav mesh not working

Hey all! So I’m trying to get my enemy to target the turrets in my game but whenever the turrets are targeted, the ai just stops moving. When turrets are not in my game, the ai is told to target the player position. Targeting the player is fine, but targeting the turrets breaks it for some reason. here is my code:

public class Enemy_Turret : MonoBehaviour
{

Transform turret;
Transform player;
EnemyHealth enemyHealth;
NavMeshAgent nav;
public float wait;
public bool hurt;

// Use this for initialization
void Start()
{
    turret = GameObject.FindGameObjectWithTag("Turret").transform;
    player = GameObject.FindGameObjectWithTag("Player").transform;
    enemyHealth = GetComponent<EnemyHealth>();
    nav = GetComponent<NavMeshAgent>();
}

// Update is called once per frame
void Update()
{
    if (PlayerHealth.playerCurrentHealth > 0 && enemyHealth.currentHealth > 0)
    {
        if (GameObject.Find("Tower Menu").GetComponent<TowerMenu>().tInGame >= 1)
        {
            nav.SetDestination(turret.position);
        }
        else if (GameObject.Find("Tower Menu").GetComponent<TowerMenu>().tInGame == 0)
        {
            nav.SetDestination(player.position);
        }
    }
    else
    {
        nav.enabled = false;
    }
}
void OnCollisionEnter(Collision col)
{
    if (col.gameObject.tag == "Turret" && !hurt)
    {
        StartCoroutine(Damage());
    }
}
//void OnCollisionStay(Collision col)
//{
//    if ((col.gameObject.tag == "Player") && !hurt)
//    {
//        StartCoroutine(Damage());
//    }
//}
IEnumerator Damage()
{
    hurt = true;
    PlayerHealth.playerCurrentHealth -= 5;
    if (GameObject.Find("Enemy Spawn").GetComponent<EnemyManager>().wave2)
    {
        PlayerHealth.playerCurrentHealth -= 5;
    }
    else if (GameObject.Find("Enemy Spawn").GetComponent<EnemyManager>().wave3)
    {
        PlayerHealth.playerCurrentHealth -= 10;
    }
    else if (GameObject.Find("Enemy Spawn").GetComponent<EnemyManager>().wave4)
    {
        PlayerHealth.playerCurrentHealth -= 15;
    }
    yield return new WaitForSeconds(wait);
    hurt = false;
}

}

Any thoughts?

You need to show the error message which appears when your code gets broken.
I suppose that this line is causing it to break:

turret = GameObject.FindGameObjectWithTag("Turret").transform;

Because “Turret” game object is not in the scene, so " GameObject.FindGameObjectWithTag(“Turret”) " will return null and then you access “.transform” for null object ( i.e null.transform ) which is causing it to break.