Почему тут TypeError у map?
А зачем там str и что вы имели ввиду, написав это?
Просто уберите.

function camelize(str) {
    return str
        .split('-')
        .map(function(word, index) {
            if (index == 0) {
                return word;
            } else {
                return word[0].toUpperCase() + word.slice(1);
            }
        })
        .join('')
}

let str = prompt('Введите текст через дефис');
alert(camelize(str));

Можно и покороче

function camelize(str) {
    return str
        .split('-')
        .map((word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1))
        .join('')
}

let str = prompt('Введите текст через дефис');
alert(camelize(str));

const upper = (word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1);
function camelize(str) {
    return str
        .split('-')
        .map(upper)
        .join('')
}

let str = prompt('Введите текст через дефис');
alert(camelize(str));

const upper = (word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1);
const camelize = str => str.split('-').map(upper).join('');

let str = prompt('Введите текст через дефис');
alert(camelize(str));
alert(camelize(str));
надо же передать аргумент в функцию..

и зачем тут .str в .str.join('') – уберите, оставьте только .join('')