I just did a minor change in the privacy policy but when I submitted the edit, it would not complete saving (the saving wheel kept spinning and spinning). While I was waiting, I went to the TOS (in a new browser tab) to do a change there too. After saving that edit without problems, I went back to the privacy policy, but the wheel was still spinning. So I went ahead and tried to edit the post again (in the same browser tab). Ironically, I found that the change was already made but I wasn’t sure whether it was really saved or whether I was just looking at the same unsaved editor content. So I clicked save to make sure it is saved. That’s when this error popped up.
For what it’s worth, I just had this same issue with a recent Discourse version (commit c10941b, basically the stable branch from 2019-02-17, not a release).
I was able to reproduce it a few times, but then not anymore, and it’s the first time ever that I had this issue. So very much an edge case …
What happened:
I did a major update to a complex wiki post (which is a Discourse manual we wrote for our purposes).
As experienced by the OP, Discourse would not complete saving (the saving wheel kept spinning and spinning). I eventually cancelled the process.
I tried to make the very same edit again, and this error popped up:
TypeError: Cannot read property ‘jqXHR’ of undefined
That was reproducible for several further attempts to make the same edit in this post.
I tried to make an edit to a different post, and that went without problems. I tried to post the same edit that failed for the manual wiki as edit to the different post, and that worked without problems, too (so it does not seem to be connected to the posted content).
I tried a small (few words) edit to the manual wiki where the original edit failed. That worked, but it took a long time (about two minutes).
I tried the failed edit again on the manual wiki, and this time it worked. And all subsequent edits worked, too.
I found the following error log entries for the time and post where this issue happened:
(Edit: upon further inspection, that error in the logs seems rather unrelated as the log shows it also in multiple other cases, which did not involve the “TypeError: Cannot read property ‘jqXHR’ of undefined” error message on the client side. But I saved the JS file where the error happened, if somebody wants to look at it.)
Message (5 copies reported)
Uncaught Error: Not Found
Url: https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js
Line: 14
Column: 25883
Window Location: https://edgeryders.eu/t/discourse-user-manual-for-edgeryders-eu/6463/1
Backtrace
Error: Not Found
at s (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:14:26084)
at o (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:14:25941)
at i (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:14:25836)
at Object.trigger (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:17:26248)
at https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:17:28250
at e.invoke (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:9:3979)
at e.flush (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:9:2902)
at e.flush (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:9:4992)
at e._end (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:9:9818)
at e.end (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:9:6320)
at e._run (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:9:10333)
at e.run (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:9:6965)
at a (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:4:29639)
at Object.r.error (https://edgeryders.eu/assets/application-b7e1701c68247f1198a83883a70ad5264302ef5fd43e37b09ce6d0125baa133a.js:7:26015)
at u (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:2:6854)
at Object.fireWith [as rejectWith] (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:2:7603)
at n (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:3:10363)
at XMLHttpRequest.<anonymous> (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06ed7d3.js:3:15221)
Env
hostname server.edgeryders.eu
process_id 27682
application_version 2.2.1
HTTP_HOST edgeryders.eu
REQUEST_URI /logs/report_js_error
REQUEST_METHOD POST
HTTP_USER_AGENT Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.75 Chrome/73.0.3683.75 Safari/537.36
HTTP_ACCEPT */*
HTTP_REFERER https://edgeryders.eu/t/discourse-user-manual-for-edgeryders-eu/6463/1
params
message Uncaught Error: Not Found Url: https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb3736
url https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58a4a8a83bcee2d99174547b01c06
line 14
column 25883
window_location https://edgeryders.eu/t/discourse-user-manual-for-edgeryders-eu/6463/1
stacktrace Error: Not Found at s (https://edgeryders.eu/assets/ember_jquery-cf9339810550f9c92505dfbb37362c58
Nein, das tritt nicht mehr auf … ich habe den Fehler im letzten Jahr nicht mehr gesehen. Es war aber von Anfang an ein sehr seltener Grenzfall und nicht eindeutig reproduzierbar, also würde ich das jetzt nicht als Beweis für das Nichtvorhandensein des Problems werten …
Übrigens: Es gibt noch einen anderen Teil des fehlgeschlagenen Post-Speichervorgangs, der verbessert werden könnte. Nämlich: Wenn das Speichern eines Posts oder einer Post-Bearbeitung aufgrund eines Netzwerkfehlers fehlschlägt, dauert es extrem lange, bis das System dies meldet. Mir fehlt eine Möglichkeit, die Anfrage erneut zu senden. Die Schaltfläche „Abbrechen
Wir brauchen einen Reproduktionsschritt, um etwas zu unternehmen. Hast du im Chrome-Netzwerk-Tab bereits mit einem künstlich unzuverlässigen Netzwerk experimentiert? Das könnte für eine Reproduktion funktionieren?
Dieser Fehler trat bei mir auf, als ich Folgendes tat.
Alles wurde in einem Plugin ausgeführt.
Ich habe einen Validator zur Post-Klasse hinzugefügt… der Inhalt ist dabei egal, aber ich füge ihn der Vollständigkeit halber hinzu.
frozen_string_literal: true
class MainPostValidator < ActiveModel::Validator
def validate(record)
puts ‘TTTTT’
p record
raw = record.raw
unless raw.present?
post.errors.add :base, 'This record is invalid'
end
end
private
def some_complex_logic
# …
end
end
Bevor ich den Server mit den neuen Änderungen startete, hatte ich die Website im Bearbeitungsmodus für einen Beitrag geöffnet, um zu prüfen, ob das Speichern der Änderungen meinen Validator auslöst.
Ich habe den Server neu gestartet, aber die Seite nicht aktualisiert! Als ich auf „Änderungen speichern“ klickte, erschien dieser Fehler. Er verschwand, sobald ich die Seite neu geladen und möglicherweise auch die Server-Instanz neu gestartet habe.
Dies geschah alles im lokalen Entwicklungsmodus.
Hoffentlich hilft das
Der Validator wurde in einer neuen Datei deklariert, und der zusätzliche Code für Post, um den Validator anzuwenden, befand sich ebenfalls in einer neuen Datei.
require_dependency 'post' Post.class_eval { include ActiveModel::Validations validates_with MainPostValidator }