Esta é uma instalação padrão e independente do Discourse, tentando atualizar de v2.7.0.beta1 para v2.7.0.beta2
O erro ocorreu aqui:
uglifyjs '/var/www/discourse/public/assets/_vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js' -m -c -o '/var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js' --source-map "base='/var/www/discourse/public/assets',root='/assets',url='/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js.map'"
Erro de parse em _vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js:1850,34
return Handlebars.compile(...arguments);
^
ERRO: Token inesperado: punc «.»
at JS_Parse_Error.get (eval at <anonymous> (/usr/lib/node_modules/uglify-js/tools/node.js:18:1), <anonymous>:71:23)
at fatal (/usr/lib/node_modules/uglify-js/bin/uglifyjs:394:27)
at run (/usr/lib/node_modules/uglify-js/bin/uglifyjs:343:9)
at Object.<anonymous> (/usr/lib/node_modules/uglify-js/bin/uglifyjs:259:5)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
rake aborted!
Errno::ENOENT: No such file or directory @ rb_file_s_size - /var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js
/var/www/discourse/lib/tasks/assets.rake:287:in `size'
/var/www/discourse/lib/tasks/assets.rake:287:in `block (4 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:178:in `block in concurrent?'
/var/www/discourse/lib/tasks/assets.rake:278:in `block (3 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:269:in `each'
/var/www/discourse/lib/tasks/assets.rake:269:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:178:in `concurrent?'
/var/www/discourse/lib/tasks/assets.rake:266:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => assets:precompile
(Veja o rastreamento completo executando a tarefa com --trace)
Docker Manager: FALHA NA ATUALIZAÇÃO
Alguma ideia? O site está offline como resultado. Obrigado.
root@redmine:/var/discourse# ./launcher enter app
ls -al ls -al root@xxxxx-app:/var/www/discourse# ls -al /var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js
-rw-r--r-- 1 discourse www-data 659907 Jan 22 04:55 /var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js
Obrigado… absolutamente nenhum plugin ou personalização pesada… foi essencialmente uma instalação limpa no final de 2020, apenas pequenos ajustes nas configurações via interface de administração do administrador, como permissões de moderador etc. Muito estranho.
Infelizmente, não fiz um backup antes de executar a atualização, embora eu tenha alguns automatizados de alguns dias atrás. Acho que essa é a minha única saída por enquanto… não sendo familiarizado com Ruby, não faço ideia de como resolver esse erro.
Ah, parece que executar ./launcher restart app pelo menos o trouxe de volta online, apesar das atualizações no esquema do banco de dados que foram aplicadas. Antes disso, estava retornando um erro 500. Ufa!
Estes são os itens presentes no diretório de plugins. Estou assumindo que vieram com a instalação principal, pois não adicionei nenhum manualmente.
root@redmine-app:/var/www/discourse# ls -al plugins/
total 12
drwxr-xr-x 22 discourse discourse 4096 Nov 4 04:54 .
drwxr-xr-x 56 discourse discourse 4096 Jan 22 04:55 ..
drwxr-xr-x 13 discourse discourse 43 Nov 4 04:54 discourse-details
drwxr-xr-x 16 discourse discourse 54 Nov 4 04:54 discourse-local-dates
drwxr-xr-x 20 discourse discourse 69 Jan 22 04:55 discourse-narrative-bot
drwxr-xr-x 11 discourse discourse 59 Nov 4 04:54 discourse-presence
drwxr-xr-x 19 discourse root 4096 Jan 22 04:43 docker_manager
drwxr-xr-x 4 discourse discourse 51 Sep 28 05:11 lazy-yt
drwxr-xr-x 25 discourse discourse 99 Nov 4 04:54 poll
drwxr-xr-x 8 discourse www-data 129 Nov 4 04:54 styleguide
O tema do site está um pouco quebrado após a reinicialização, imagino que porque os assets não tenham terminado de compilar… Será que há uma maneira de finalizar isso manualmente?
Esta é a seção no arquivo JS do vendor sobre a qual ele está reclamando:
// permite que importemos isso como um módulo
if (typeof define !== "undefined") {
define("handlebars", ["exports"], function (__exports__) {
// Pode não estar definido no lado do servidor, o que é OK para pretty-text
if (typeof Handlebars !== "undefined") {
// eslint-disable-next-line
__exports__.default = Handlebars;
__exports__.compile = function () {
// eslint-disable-next-line
return Handlebars.compile(...arguments);
};
}
});
define("handlebars-compiler", ["exports"], function (__exports__) {
// eslint-disable-next-line
__exports__.default = Handlebars.compile;
});
}
;
A linha 1850 (que gera o erro) é este trecho:
return Handlebars.compile(...arguments);
Existe alguma solução temporária que eu possa aplicar aqui para contornar o problema? Ou esse arquivo será gerado a cada vez que eu tentar fazer a atualização? (P.S.: ele acha que atualizei completamente após a reinicialização… mas o tema está quebrado… estou me perguntando se consigo passar por essa etapa de alguma forma ou se terei que restaurar a partir de um backup, basicamente…)
OK - então não sei o motivo, mas executei o processo de atualização manual (git pull; ./launcher rebuild app) e funcionou.
Muitas outras atividades, como atualizações do PostgreSQL etc., foram incluídas nessa atualização manual.
Minha suposição: algo naquele commit acima não era compatível com o uglify-js, a versão do Rails ou outra coisa no contêiner original. Era basicamente uma atualização que exigia o processo de atualização ‘manual’.
Como a interface de administração da web me permitiu atualizar o docker_manager e depois o próprio aplicativo Discourse, assumi que isso não seria necessário (sei que às vezes ela indica que uma atualização via administração da web não pode ser feita e que deve ser feita manualmente… mas isso não aconteceu neste caso e provavelmente deveria ter acontecido…)
Também tive um problema ao executar esta atualização (atualização da Web)
Após executar estes comandos:
cd /var/discourse
git pull
./launcher rebuild app
o Discourse está funcionando, mas não é possível acessar o painel de administração (/admin)
A atualização do Ubuntu ajudou a restaurar o funcionamento.
O anúncio dizia que seria necessário fazer uma reconstrução pela linha de comando. Não tenho certeza do motivo pelo qual a interface web não soube impor isso.
Curiosamente, eu estava tentando usar essa funcionalidade em dev e ela não está funcionando para mim… O objeto Handlebars tem apenas create(), não compile(), embora eu possa estar no caminho errado… Já abri um tópico aqui: Adding a bespoke raw template