Docs: add troubleshooting section on Backbone/Skeletor "url" property error

This commit is contained in:
JC Brand 2020-10-14 12:07:13 +02:00
parent 395aa8cb95
commit a42390c91f

View File

@ -114,3 +114,28 @@ what you're using as the HTTP file server.
CORS is enabled by adding an ``Access-Control-Allow-Origin`` header, so you'll
have to configure your file server to add this header.
Common errors
=============
Error: A "url" property or function must be specified
-----------------------------------------------------
That's a relatively generic `Skeletor <https://github.com/conversejs/skeletor>`_ (or `Backbone <http://backbonejs.org/>_`)
error and by itself it usually doesn't give enough information to know how to fix the underlying issue.
Generally, this error happens when a Model is being persisted (e.g. when model.save() is called,
but there is no information specifying where/how it should be persisted.
The Converse models are persisted to browser storage (e.g. sessionStorage, localStorage or IndexedDB),
and this happens by adding a browserStorage attribute on the model, or on the collection containing the model.
See for example here: https://github.com/conversejs/converse.js/blob/395aa8cb959bbb7e26472ed3356160c8044be081/src/headless/converse-chat.js#L359
If this error occurs, it means that a model being persisted doesn't have the ``browserStorage`` attribute,
and it's containing collection (if there is one) also doesn't have that attribute.
This usually happens when a model has been removed from a collection, and then ``.save()`` is called on it.
In the context of Converse it might mean that there's an attempt to persist data before all models have been properly initialized,
or conversely after models have been removed from their containing collections.