main.js
var tempoInicial = $("#tempo-digitacao").text();
var campo = $(".campo-digitacao")
$(function (){
    atualizaTamanhoFrase();
    inicializaContadores();
    inicializaCronometro();
    inicializaMarcadores();
    $("#botao-reiniciar").click(reiniciaJogo);
})
function atualizaTempoInicial(tempo) {
    $("#tempo-digitacao").text(tempo);
}
function atualizaTamanhoFrase() {
    var numPalavras = frase.split(" ").length;
    var tamanhoFrase = $("#tamanho-frase");
    tamanhoFrase.text(numPalavras);
}
function inicializaContadores() {
    campo.on("input", function(){
        var conteudo = campo.val();
        var qtdPalavras = conteudo.split(/\S+/).length - 1;
        var qtdCaracteres = conteudo.length;
        $("#contador-palavras").text(qtdPalavras);
        $("#contador-caracteres").text(qtdCaracteres);
    });
}
function inicializaCronometro() {
    var tempoRestante = $("#tempo-digitacao").text();
    campo.one("focus", function (){
        var cronometoID = setInterval(function(){
            tempoRestante--;
            $("#tempo-digitacao").text(tempoRestante);
            if (tempoRestante < 1) {
                clearInterval(cronometoID);
                finalizaJogo();
            }
        },1000);   
    })
}
function finalizaJogo(){
    campo.attr("disabled", true);
    campo.toggleClass("campo-desativado");
    inserePlacar();
}
function inicializaMarcadores(){
    campo.on("input", function () {
        var digitado = campo.val();
        var comparavel = frase.substr(0,digitado.length);
        if (digitado == comparavel) {
            campo.addClass("borda-verde");
            campo.removeClass("borda-vermelha");
        }else{
            campo.addClass("borda-vermelha");
            campo.removeClass("borda-verde");
        }
    });
}
function reiniciaJogo() {
    campo.attr("disabled", false);
    campo.val("");
    $("#contador-palavras").text("0");
    $("#contador-caracteres").text("0");
    $("#tempo-digitacao").text(tempoInicial);
    inicializaCronometro();
    campo.removeClass("campo-desativado");
    campo.removeClass("borda-verde");
    campo.removeClass("borda-vermelha");
}
frases.js
$("#botao-frase").click(fraseAleatoria);
function fraseAleatoria() {
    $.get("http://localhost:3000/frases", trocaFraseAleatoria);
}
function trocaFraseAleatoria(data) {
    var frase = $(".frase");
    var numeroAleatorio = Math.floor(Math.random() * data.length);
    frase.text(data[numeroAleatorio].texto);
    atualizaTamanhoFrase();   
    atualizaTempoInicial(data[numeroAleatorio].tempo);
    stop();
}Eu não sei porque o tamanho das minhas frases não atualizam, mas se eu mudar a frase principal no html o código funciona!