'Parser returned unfilled promise' error in Dojo

I'm getting the following error when using dojo/parser in my code.

parser returned unfilled promise (probably waiting for module auto-load), unsupported by _WidgetsInTemplateMixin.

I've

define([
    "dojo/_base/declare",
    "dijit/_WidgetBase",
    "myApp/base/_TemplatedMixin",
    "dijit/_WidgetsInTemplateMixin",
    "dojo/text!../templates/MyTemplate.html",
    "dojo/i18n!../nls/Localized",
    "myApp/js/utils/hint",
    "dijit/form/ValidationTextBox",
    "dijit/form/SimpleTextarea",
    "dijit/form/Button",
    "dojo/parser",
    "dojo/domReady!"
], function (
    declare,
    _WidgetBase,
    _TemplatedMixin,
    _WidgetsInTemplateMixin,
    template,
    l10n,
    hint
) {

    'use strict';

    /**
     * @module
     */

    return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {

        widgetsInTemplate: true,

        /**
         * @description Localized object for view
         * @type {object}
         */
        l10n: l10n,

        /**
         * @description Custom template for view
         * @override
         */
        templateString: template,


        //postCreate: function () {
            //hint(l10n.hint);
        //}
    });

});

I've done some research and realized it may have to do with dependencies and order. I've added the widgetsIntemplate attribute but still no dice. This only happens on first load of the page.

Can anyone help?

Answers:

Answer

If you have widgets in your template, you have to make sure they are all preloaded. Make sure your define has all the widgets in your template.

Answer

For future readers: This error message may also be thrown when creating one of the widgets in the template fails to any other reason.

For example I had a dijit/form/FilteringSelect in a template and had a typo in the variable I passed to its store property. So the store was undefined.

It can be quite hard to find the source of this error message sometimes.

  1. Successively remove widgets from the template to identify the one that causes the problem.
  2. Instance the widget programatically inside a try-catch block inside your own buildRendering function to see what is actually going wrong.

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.