Bug #80459
Updated by Markus Klein over 7 years ago
Some module require the requireJS module FormEngine. Those modules use the "submodule" @FormEngine.Validation@ in their initialization.
The problem is that @FormEngine.Validation@ is initialized in a separate requireJS module "FormEngineValidation", which itself depends on the FormEngine module to be available.
So for requireJS the dependency tree resolves to this:
FormEngine
- FormEngineValidation
- Editor
- ...
As by definition the loading and execution order of modules without dependency is undefined.
Since e.g. Editor specifies a dependency on FormEngine, but uses actually only FormEngineValidation, there can be race conditions, FormEngineValidation is actually not yet there.
This can be reproduced using Chrome 57 (on Windows) on latest master, TYPO3 in dev context and with network throttling set to 2G, caching disabled.
You will receive JS errors in the console where Editor.js is reported to access @FormEngine.Validation.validate()@, where @FormEngine.Validation@ is undefined.
This is actually totally clear, when inspecting the dependencies close enough.