Roman Numeral Converter Challenge

I liked my solution until I realized that I had to replace values like IIII with IV. I think that is the precise moment when I began coding shit. I was able to pass all the tests, but I am not sure whether this is still a valid solution. Any feedback would be welcome:

function convertToRoman(num) {
  var alphabet = {
    "I": 1,
    "V": 5,
    "X": 10,
    "L": 50,
    "C": 100,
    "D": 500,
    "M": 1000
  }
  
  var feedRecursive = [ 1, 5, 10, 50, 100, 500, 1000];
  
  function recursiveConversion(value, n) {
    if(value % feedRecursive[n] == 0) {
      for (var i = 0; i < Math.trunc(value / feedRecursive[n]); i++) {
        erg.push(Object.keys(alphabet)[n]);
      }
      return console.log(value);
    }
    
    if(Math.trunc(value / feedRecursive[n]) != 0) {
      for (var i = 0; i < Math.trunc(value / feedRecursive[n]); i++) {
        erg.push(Object.keys(alphabet)[n]);
      }
      value -= (Math.trunc(value / feedRecursive[n])) * feedRecursive[n];
    }
    
    console.log(n, value)
    return recursiveConversion(value, n-1);
  }
  
  var erg = [];
  recursiveConversion(num, Object.keys(alphabet).length - 1);
  
  ergString = erg.join("").replace(/(IIIIV)|(IIII)\b/g, "IV").replace(/(VIIII)|(IIIIX)|(VIV)/g, "IX").replace(/(XXXXL)|(XXXX)/g, "XL").replace(/(XXXXC)|(LXXXX)|(LXL)/g,"XC").replace(/(CCCCD)/g, "CD").replace(/(CCCCM)|(DCCCC)/g, "CM");
  console.log(ergString);
  return ergString;
}

convertToRoman(3999);