Discurso quebrado após mudança de servidores

Nossa instância do Discourse está hospedada no Digital Ocean há muitos anos, a ponto de problemas estarem surgindo devido à permanência no Ubuntu 18. Portanto, criei um novo Droplet com uma instalação limpa do Discourse, o inicializei e, em seguida, baixei e restaurei o backup mais recente do Droplet antigo. Nenhum erro durante todo o processo.

No entanto, ao fazer login na nova instância, ela fica assim:

E o console me retorna isto:

Uncaught SyntaxError: unexpected token: private identifier
admin-13326e7ca61effcc233d500e3263c63074c9823b7e1d0c1680b6f68e23565d5a.js:76:99
ℹ️ Discourse v3.3.0.beta2-dev — https://github.com/discourse/discourse/commits/2a2eaf835f — Ember v5.5.0 app.js:213
Uncaught (in promise) Error: There is no route named admin
    handlersFor https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    isActiveForRoute https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    isActiveForState https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    get isActive https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    get class https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Re https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    a https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    tag https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    track https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    d https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Ke https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    tag https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    track https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    d https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Je https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    flush https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    <anonymous> https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluate https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluateSyscall https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluateInner https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluateOuter https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    next https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _execute https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    execute https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    sync https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    render https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRoots https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Nt https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRoots https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRootsTransaction https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRoot https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _appendDefinition https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    appendOutletView https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    invoke https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    flush https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    flush https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _end https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _boundAutorunEnd https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9:384138

Qualquer sugestão sobre onde começar a solucionar este problema seria muito apreciada. Obrigado!

1 curtida

Você pode tentar visitar seu site em modo de segurança para ver se ele carrega?

1 curtida

Eu fiz isso. Parece idêntico e recebo os mesmos erros.

Ah, e também, acabei de tentar fazer login em uma conta diferente sem permissões de administrador ou moderador, e ela carrega bem, pelo que posso dizer. Tenho acesso a três tipos diferentes de contas, e aqui estão os resultados da minha experimentação:

  • conta de administrador → quebrada
  • conta de moderador (com acesso limitado ao painel de administração) → quebrada
  • conta regular → funciona bem

O problema parece acontecer apenas se o menu lateral incluir o link “Admin”, pois é isso que teria aparecido logo abaixo do item “Review” na captura de tela acima. Talvez isso ajude?

Além disso, se importar, a instância antiga da qual fiz o backup não estava na versão mais recente do Discourse. Acho que estava em algo como 3.1.2. A nova instância, claro, está na versão mais recente.

O problema é que há um erro de sintaxe em um dos arquivos javascript do admin e isso leva ao efeito colateral de a rota admin não ser registrada.

No console, você consegue expandir ou acessar o arquivo em que o erro de sintaxe é lançado? A informação é um tanto limitada no momento para que possamos dizer o que está errado.

Claro, embora seja apenas uma linha contígua de Javascript minificado. Tentei colar tudo aqui, mas excede a contagem de caracteres permitida. Usei uma ferramenta online de desminificação e identifiquei o bloco de código que está lançando o erro.

(P.prototype.handlersFor = function (e) {
    var t = this.names[e];
    if (!t) throw new Error("There is no route named " + e);
    for (var r = new Array(t.handlers.length), n = 0; n < t.handlers.length; n++) {
        var i = t.handlers[n];
        r[n] = i;
    }
    return r;
}),

Isso ajuda, ou preciso encontrar uma maneira de postar o arquivo inteiro?

Você está usando o Cloudflare com a nuvem laranja? Se sim, desative-o.

2 curtidas

Tenho um problema semelhante que parece ter começado hoje ou ontem. Minhas rotas de administrador não funcionam e um menu está quebrado.

Uncaught (in promise) Error: There is no route named admin

Encontrei este tópico pesquisando para ver se mais alguém estava encontrando um problema com o Cloudflare.

Se eu limpar o cache do Cloudflare ou ativar o modo de desenvolvimento, o problema desaparece, mas assim que o cache começa, o problema retorna.

Editar: Não tenho certeza se isso está relacionado, mas estes são alguns dos erros no console quando logado como administrador.

Aqui está a linha de código:

class d extends t.default{static#e=dt7948.g(this.prototype,\"currentUser\",[a.service])#t=void dt7948.i(this,\"currentUser\")

Meu menu é cortado aqui:

O erro “no route named admin” acontece quando abro esse menu. Pode estar sendo cortado onde estaria o link “admin”.

Você deve desativar todas as regras no Cloudflare, incluindo o Rocket Launcher e qualquer WAF.

Se você mantiver sua configuração do Cloudflare limpa, ela não causará problemas com o Discourse.

Rocket Loader está desativado neste site. Não acho que nenhuma alteração nas configurações do Cloudflare tenha sido feita recentemente. (Acabei de verificar os logs de auditoria.)

@Ryan_Hyer Estou olhando sua captura de tela novamente. Ela está cortando exatamente onde o item do menu de administrador apareceria? É o mesmo lugar onde está acontecendo no meu site.

Se você tiver recursos como WAF ativados, o Cloudflare também poderá fazer alterações em seu comportamento interno que podem afetar seu site.

Certifique-se também de que o recurso “minificação automática” do Cloudflare esteja desativado e que você tenha limpado o cache.

Eles descontinuaram o recurso porque ele não funciona para recursos modernos de JS (que o Discourse está usando agora)

1 curtida

Nós revertemos a alteração devido aos problemas com o Cloudflare e o Safari 15.

Então, @Ryan_Hyer, se você atualizar o Discourse novamente, as coisas devem voltar ao normal.

(mas ainda assim, recomendo fortemente desabilitar todos os recursos de “otimização” de JS do Cloudflare, como Rocket Loader e minificação automática)

3 curtidas

Obrigado! O Git pull diz que já estou atualizado, então a mudança ainda não deve estar disponível?

Acredito que a única coisa para a qual estamos usando o Cloudflare é DNS e proteção contra DDOS, nada mais. Mas sim, tínhamos a nuvem laranja ativada. Acabei de desativá-la, e meu site parece estar funcionando, ótimo! Valeu, pessoal!

2 curtidas

Essa nuvem laranja sem nenhum ajuste dos padrões significa essencialmente “quebre meu site”.

Temos um guia sobre o que configurar se você estiver usando.

1 curtida

Obrigado, era isso. Desativei a minificação automática, limpei o cache, fiz uma atualização forçada e as coisas voltaram a funcionar.

3 curtidas

Este tópico foi automaticamente fechado 30 dias após a última resposta. Novas respostas não são mais permitidas.