Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>)

Vejo esse erro toda hora que rodo a aplicação.

Não consigo ver a diferença pro código que está na explicação.

const Mural = (function(_render, Filtro){
    "use strict"
    let cartoes = JSON.parse(localStorage.getItem("cartoes") || [])
        .map(cartaoLocal => new Cartao(cartaoLocal.conteudo, cartaoLocal.tipo))
    const render = () => _render({ cartoes: cartoes, filtro: Filtro.tagsETexto });
    render();

    Filtro.on("filtrado", render)

    function salvaCartoes() {
        localStorage.setItem("cartoes", cartoes.map(cartao =>
            ({ conteudo: cartao.conteudo, tipo: cartao.tipo }))
        )
    }

    function adiciona(cartao) {
        if (logado) {
            cartoes.push(cartao)
            salvaCartoes()
            cartao.on("mudanca.**", render)
            cartao.on("remocao", () => {
                cartoes = cartoes.slice(0)
                cartoes.splice(cartoes.indexOf(cartao), 1)
                render()
            })
            render()
            return true
        } else {
            alert("Você não está logado.");
        }
    }

    return Object.seal({
        adiciona
    })

})(Mural_render, Filtro)
2 respostas
solução!

Boa tarde, Silvio!

O problema está na linha 3, o JSON.parse espera sempre uma string, então como você deve estar com o cache de "cartoes" vazio, ele tenta fazer o parse do array "[]", mas, não consegue.

Para corrigir basta colocar aspas em volta do array vazio que criou da seguinte maneira:

let cartoes = JSON.parse(localStorage.getItem("cartoes") || "[]")

Perfeito, valeu! Vou mandar uma sugestão de correção, a transcrição da aula está errada.