Wave Spawning not working

Hi, trying to use an ienumerator for a wave spawning script, i could get it to spawn enemies every few minutes but i’m trying to use waves but it just crashes when it starts

public class SpawnController : MonoBehaviour
{
    public GameObject Enemy = null;
    public GameObject[] enemys;

    public float spawnWait;
    public float startWait;
    public float waveWait;
    public float waveTimer = 5;

    public int waves;
    public int currentWave;

    
    public int waveEnemies;
    public static int enemies;
    public Transform[] spawnPoints;

    void Start()
    {
        
    }
    IEnumerator SpawnWavesE;

    void FixedUpdate()
    {
       
        if (currentWave == 1)
        {
            StartCoroutine("SpawnWaves");
        }
        if (currentWave == 2)
        {
            StartCoroutine("SpawnWaves");
        }
        if (currentWave == 3)
        {
            StartCoroutine("SpawnWaves");
        }
        if (currentWave == 4)
        {
            StartCoroutine("SpawnWaves");
        }
    }

    public IEnumerator SpawnWaves()
    {
        yield return new WaitForSeconds(startWait);
        while (true)
        {

            for (int i = 0; i < waveEnemies; i++)
            {
                if (enemies < waveEnemies)
                {
                    Debug.Log("Enmies:" + enemies);
                    int spawnPointIndex = Random.Range(0, spawnPoints.Length);
                    PhotonNetwork.InstantiateSceneObject(Path.Combine("Enemy", "Enemy"), spawnPoints[spawnPointIndex].position, Quaternion.identity);
                    enemies += 1;
                    yield return new WaitForSeconds(spawnWait);
                }

            }

            if (enemies <= 0)
            {
                Debug.Log("STARTING NEW WAVE");
                currentWave += 1;
                Debug.Log("Enmies:" + enemies);
                Debug.Log("Wave: " + waves);
                waveEnemies += 1;
                yield return new WaitForSeconds(waveWait);
                StopCoroutine("SpawnWaves");
            }
        }
    }

Is there something i’m doing wrong??

Yeah you’re doing quite a lot wrong here. First off, don’t start a coroutine with a string, store it in a coroutine instead like this

Coroutine myCoroutine = StartCoroutine(SpawnWaves());

If you wish to stop the coroutine, do

StopCoroutine(myCoroutine);

Secondly, don’t stop a coroutine inside a coroutine, figure out when to yield out of it instead
e.g

While(enemies > 0)