Some users get javascript errors when trying to load our Discourse

I am in the process of moving our self-hosted Discourse from one server to another at a different domain.

I created the new DIscourse using a copy of the original app.yml (but with the domain name changed, and email temporarily disabled). I then backed up the old server and restored it on the new one.

The new server works fine for me, but some of our users who are testing it for me get a partially filled, unresponsive screen.

I have asked one to send me their chrome console log, and it looks like this:

plugin-api.js:19 [PLUGIN discourse-question-answer] To prevent errors in tests, add a `pluginId` key to your `modifyClass` call. This will ensure the modification is only applied once.
be @ plugin-api.js:19
modifyClass @ plugin-api.js:104
p @ qa-edits.js:172
e.withPluginApi @ plugin-api.js:2017
initialize @ qa-edits.js:512
o.initialize @ app.js:41
(anonymous) @ index.js:126
e.each @ dag-map.js:192
e.walk @ dag-map.js:121
e.each @ dag-map.js:66
e.topsort @ dag-map.js:72
_runInitializer @ index.js:138
runInstanceInitializers @ index.js:124
_bootSync @ instance.js:101
didBecomeReady @ application.js:650
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
plugin-api.js:19 [PLUGIN discourse-question-answer] To prevent errors in tests, add a `pluginId` key to your `modifyClass` call. This will ensure the modification is only applied once.
be @ plugin-api.js:19
modifyClass @ plugin-api.js:104
p @ qa-edits.js:296
e.withPluginApi @ plugin-api.js:2017
initialize @ qa-edits.js:512
o.initialize @ app.js:41
(anonymous) @ index.js:126
e.each @ dag-map.js:192
e.walk @ dag-map.js:121
e.each @ dag-map.js:66
e.topsort @ dag-map.js:72
_runInitializer @ index.js:138
runInstanceInitializers @ index.js:124
_bootSync @ instance.js:101
didBecomeReady @ application.js:650
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
plugin-api.js:19 [PLUGIN discourse-question-answer] To prevent errors in tests, add a `pluginId` key to your `modifyClass` call. This will ensure the modification is only applied once.
be @ plugin-api.js:19
modifyClass @ plugin-api.js:104
p @ qa-edits.js:301
e.withPluginApi @ plugin-api.js:2017
initialize @ qa-edits.js:512
o.initialize @ app.js:41
(anonymous) @ index.js:126
e.each @ dag-map.js:192
e.walk @ dag-map.js:121
e.each @ dag-map.js:66
e.topsort @ dag-map.js:72
_runInitializer @ index.js:138
runInstanceInitializers @ index.js:124
_bootSync @ instance.js:101
didBecomeReady @ application.js:650
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
plugin-api.js:19 [PLUGIN discourse-question-answer] To prevent errors in tests, add a `pluginId` key to your `modifyClass` call. This will ensure the modification is only applied once.
be @ plugin-api.js:19
modifyClass @ plugin-api.js:104
p @ qa-edits.js:309
e.withPluginApi @ plugin-api.js:2017
initialize @ qa-edits.js:512
o.initialize @ app.js:41
(anonymous) @ index.js:126
e.each @ dag-map.js:192
e.walk @ dag-map.js:121
e.each @ dag-map.js:66
e.topsort @ dag-map.js:72
_runInitializer @ index.js:138
runInstanceInitializers @ index.js:124
_bootSync @ instance.js:101
didBecomeReady @ application.js:650
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
plugin-api.js:19 [PLUGIN discourse-question-answer] To prevent errors in tests, add a `pluginId` key to your `modifyClass` call. This will ensure the modification is only applied once.
be @ plugin-api.js:19
modifyClass @ plugin-api.js:104
p @ qa-edits.js:356
e.withPluginApi @ plugin-api.js:2017
initialize @ qa-edits.js:512
o.initialize @ app.js:41
(anonymous) @ index.js:126
e.each @ dag-map.js:192
e.walk @ dag-map.js:121
e.each @ dag-map.js:66
e.topsort @ dag-map.js:72
_runInitializer @ index.js:138
runInstanceInitializers @ index.js:124
_bootSync @ instance.js:101
didBecomeReady @ application.js:650
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
plugin-api.js:19 [PLUGIN discourse-question-answer] To prevent errors in tests, add a `pluginId` key to your `modifyClass` call. This will ensure the modification is only applied once.
be @ plugin-api.js:19
modifyClass @ plugin-api.js:104
p @ qa-edits.js:369
e.withPluginApi @ plugin-api.js:2017
initialize @ qa-edits.js:512
o.initialize @ app.js:41
(anonymous) @ index.js:126
e.each @ dag-map.js:192
e.walk @ dag-map.js:121
e.each @ dag-map.js:66
e.topsort @ dag-map.js:72
_runInitializer @ index.js:138
runInstanceInitializers @ index.js:124
_bootSync @ instance.js:101
didBecomeReady @ application.js:650
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
plugin-api.js:19 [PLUGIN retort] To prevent errors in tests, add a `pluginId` key to your `modifyClass` call. This will ensure the modification is only applied once.
be @ plugin-api.js:19
modifyClass @ plugin-api.js:104
(anonymous) @ retort-init.js:52
(anonymous) @ retort-init.js:203
e.withPluginApi @ plugin-api.js:2017
initialize @ retort-init.js:203
o.initialize @ app.js:41
(anonymous) @ index.js:126
e.each @ dag-map.js:192
e.walk @ dag-map.js:121
e.each @ dag-map.js:66
e.topsort @ dag-map.js:72
_runInitializer @ index.js:138
runInstanceInitializers @ index.js:124
_bootSync @ instance.js:101
didBecomeReady @ application.js:650
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
plugin-api.js:19 [PLUGIN retort] To prevent errors in tests, add a `pluginId` key to your `modifyClass` call. This will ensure the modification is only applied once.
be @ plugin-api.js:19
modifyClass @ plugin-api.js:104
(anonymous) @ retort-init.js:73
(anonymous) @ retort-init.js:203
e.withPluginApi @ plugin-api.js:2017
initialize @ retort-init.js:203
o.initialize @ app.js:41
(anonymous) @ index.js:126
e.each @ dag-map.js:192
e.walk @ dag-map.js:121
e.each @ dag-map.js:66
e.topsort @ dag-map.js:72
_runInitializer @ index.js:138
runInstanceInitializers @ index.js:124
_bootSync @ instance.js:101
didBecomeReady @ application.js:650
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
plugin-api.js:19 [THEME 26 'Categories Boxes Layout'] To prevent errors in tests, add a `pluginId` key to your `modifyClass` call. This will ensure the modification is only applied once.
be @ plugin-api.js:19
modifyClass @ plugin-api.js:104
(anonymous) @ b6863d93ed8f4b85f42f5111df3c50034797d706.js?__ws=forums.extinctionrebellion.uk:29
e.withPluginApi @ plugin-api.js:2017
initialize @ b6863d93ed8f4b85f42f5111df3c50034797d706.js?__ws=forums.extinctionrebellion.uk:26
o.initialize @ app.js:41
(anonymous) @ index.js:126
e.each @ dag-map.js:192
e.walk @ dag-map.js:121
e.each @ dag-map.js:66
e.topsort @ dag-map.js:72
_runInitializer @ index.js:138
runInstanceInitializers @ index.js:124
_bootSync @ instance.js:101
didBecomeReady @ application.js:650
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
plugin-api.js:19 [THEME 26 'Categories Boxes Layout'] To prevent errors in tests, add a `pluginId` key to your `modifyClass` call. This will ensure the modification is only applied once.
be @ plugin-api.js:19
modifyClass @ plugin-api.js:104
(anonymous) @ b6863d93ed8f4b85f42f5111df3c50034797d706.js?__ws=forums.extinctionrebellion.uk:40
e.withPluginApi @ plugin-api.js:2017
initialize @ b6863d93ed8f4b85f42f5111df3c50034797d706.js?__ws=forums.extinctionrebellion.uk:26
o.initialize @ app.js:41
(anonymous) @ index.js:126
e.each @ dag-map.js:192
e.walk @ dag-map.js:121
e.each @ dag-map.js:66
e.topsort @ dag-map.js:72
_runInitializer @ index.js:138
runInstanceInitializers @ index.js:124
_bootSync @ instance.js:101
didBecomeReady @ application.js:650
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
program.js:103 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'getHelper')
    at u.helper (program.js:103:1)
    at opcode-compiler.js:229:1
    at ne (opcode-compiler.js:2214:1)
    at l (opcode-compiler.js:2149:1)
    at opcode-compiler.js:440:1
    at y.compile (opcode-compiler.js:422:1)
    at x (opcode-compiler.js:629:1)
    at opcode-compiler.js:1933:1
    at y.compile (opcode-compiler.js:422:1)
    at te (opcode-compiler.js:2152:1)
    at opcode-compiler.js:2131:1
    at Z.compile (opcode-compiler.js:2114:1)
    at $t.compile (runtime.js:4855:1)
    at Object.evaluate (runtime.js:1981:1)
    at Object.evaluate (runtime.js:1052:1)
    at It.evaluateSyscall (runtime.js:4263:1)
    at It.evaluateInner (runtime.js:4234:1)
    at It.evaluateOuter (runtime.js:4227:1)
    at $t.next (runtime.js:5058:1)
    at $t._execute (runtime.js:5045:1)
    at $t.execute (runtime.js:5038:1)
    at Qt.sync (runtime.js:5105:1)
    at Or.render (index.js:6757:1)
    at index.js:7021:1
    at Mt (runtime.js:4139:1)
    at Sr._renderRoots (index.js:7004:1)
    at Sr._renderRootsTransaction (index.js:7047:1)
    at Sr._renderRoot (index.js:6993:1)
    at Sr._appendDefinition (index.js:6919:1)
    at Sr.appendOutletView (index.js:6907:1)
    at p.invoke (queue.ts:203:14)
    at p.flush (queue.ts:98:13)
    at h.flush (deferred-action-queues.ts:75:19)
    at q._end (index.ts:616:32)
    at _boundAutorunEnd (index.ts:257:12)
helper @ program.js:103
(anonymous) @ opcode-compiler.js:229
ne @ opcode-compiler.js:2214
l @ opcode-compiler.js:2149
(anonymous) @ opcode-compiler.js:440
compile @ opcode-compiler.js:422
x @ opcode-compiler.js:629
(anonymous) @ opcode-compiler.js:1933
compile @ opcode-compiler.js:422
te @ opcode-compiler.js:2152
(anonymous) @ opcode-compiler.js:2131
compile @ opcode-compiler.js:2114
compile @ runtime.js:4855
(anonymous) @ runtime.js:1981
evaluate @ runtime.js:1052
evaluateSyscall @ runtime.js:4263
evaluateInner @ runtime.js:4234
evaluateOuter @ runtime.js:4227
next @ runtime.js:5058
_execute @ runtime.js:5045
execute @ runtime.js:5038
sync @ runtime.js:5105
Or.render @ index.js:6757
(anonymous) @ index.js:7021
Mt @ runtime.js:4139
_renderRoots @ index.js:7004
_renderRootsTransaction @ index.js:7047
_renderRoot @ index.js:6993
_appendDefinition @ index.js:6919
appendOutletView @ index.js:6907
p.invoke @ queue.ts:203
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
runtime.js:1051 Uncaught TypeError: Cannot read properties of null (reading 'syscall')
    at Object.evaluate (runtime.js:1051:1)
    at It.evaluateSyscall (runtime.js:4263:1)
    at It.evaluateInner (runtime.js:4234:1)
    at It.evaluateOuter (runtime.js:4227:1)
    at $t.next (runtime.js:5058:1)
    at $t._execute (runtime.js:5045:1)
    at $t.execute (runtime.js:5038:1)
    at Qt.sync (runtime.js:5105:1)
    at Or.render (index.js:6757:1)
    at index.js:7021:1
    at Mt (runtime.js:4139:1)
    at Sr._renderRoots (index.js:7004:1)
    at Sr._renderRootsTransaction (index.js:7047:1)
    at Sr._revalidate (index.js:7080:1)
    at p.invoke (queue.ts:201:14)
    at p.flush (queue.ts:98:13)
    at h.flush (deferred-action-queues.ts:75:19)
    at q._end (index.ts:616:32)
    at q.end (index.ts:298:10)
    at q._run (index.ts:667:14)
    at q._join (index.ts:640:19)
    at q.join (index.ts:362:17)
    at p (index.js:157:1)
    at index.js:258:1
evaluate @ runtime.js:1051
evaluateSyscall @ runtime.js:4263
evaluateInner @ runtime.js:4234
evaluateOuter @ runtime.js:4227
next @ runtime.js:5058
_execute @ runtime.js:5045
execute @ runtime.js:5038
sync @ runtime.js:5105
Or.render @ index.js:6757
(anonymous) @ index.js:7021
Mt @ runtime.js:4139
_renderRoots @ index.js:7004
_renderRootsTransaction @ index.js:7047
_revalidate @ index.js:7080
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
q._end @ index.ts:616
q.end @ index.ts:298
q._run @ index.ts:667
q._join @ index.ts:640
q.join @ index.ts:362
p @ index.js:157
(anonymous) @ index.js:258

How do I go about debugging and fixing this issue, please?

discourse-question-answer is a deprecated plugin. It has been superseded by discourse-post-voting.

Remove the one from your app.yml and, if you were using it, replace it with the other. Then rebuild.

7 Likes