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'"
Parse error at _vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js:1850,34
return Handlebars.compile(...arguments);
^
ERROR: Unexpected token: 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
(See full trace by running task with --trace)
Docker Manager: FAILED TO UPGRADE
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
// allow us to import this as a module
if (typeof define !== "undefined") {
define("handlebars", ["exports"], function (__exports__) {
// It might not be defined server side, which is OK for 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;
});
}
;
1850번째 줄(에러가 발생하는 부분)은 이 코드입니다:
return Handlebars.compile(...arguments);
이 부분을 우회하기 위해 할 수 있는 임시 해킹 방법이 있을까요? 아니면 업그레이드를 시도할 때마다 이 파일이 재생성되는 건가요? (참고로 재시작 후 업그레이드가 완전히 완료된 것으로 인식하지만, 테마는 깨져 있습니다. 이 단계를 어떻게든 통과할 수 있는지, 아니면 백업에서 복원해야 하는지 궁금합니다.)
네 - 왜 그런지는 모르겠지만, 수동 업그레이드 과정(git pull; ./launcher rebuild app)을 실행했는데 성공했습니다.
그 수동 업그레이드 과정에서 포스트그레SQL 업그레이드 등 다른 여러 활동도 함께 처리되었습니다.
제 추측으로는, 위에 언급된 커밋에 있는 어떤 부분이 원래 컨테이너에서 uglify-js나 rails 버전 등과 호환되지 않았던 것 같습니다. 기본적으로 수동 업그레이드 과정이 필요한 업그레이드였죠.
웹 관리 인터페이스에서 docker_manager를 업그레이드한 후 discourse 앱 자체를 업그레이드할 수 있었기 때문에, 이 과정이 필요 없을 것이라고 생각했습니다. (웹 관리를 통한 업그레이드가 불가능하다는 메시지가 표시되고 수동으로 해야 한다는 안내가 나오는 경우가 있다는 건 알고 있습니다. 하지만 이번에는 그런 안내가 나오지 않았고, 아마도 나와야 했을 텐데…)
유머러스하게도, 저는 방금 개발 환경에서 그 기능을 사용하려고 시도했는데 제 환경에서는 작동하지 않습니다… Handlebars 객체에는 compile()이 아니라 create()만 있습니다. 하지만 제가 잘못된 방향으로 접근하고 있을 수도 있겠네요… 여기에서 이슈를 등록했습니다: Adding a bespoke raw template