aspnetboilerplate/aspnetboilerplate · warning

abp.message.error is not implemented!

Error message

abp.message.error is not implemented!

What it means

abp.message.error is a default stub that only logs a warning and returns showMessage(...); the Message API (dialogs) is intentionally unimplemented in core abp.js. An adapter such as abp.sweet-alert or abp.blockUI/message integration must override it. The warning indicates no message adapter is active.

Solutions

  1. Include a message adapter (e.g. abp.sweet-alert.min.js with sweetalert) after abp.js.
  2. Fix script ordering so the adapter overrides land after abp.js initializes.
  3. Confirm the adapter assets resolve (network tab) and versions are compatible with your abp.js.
  4. Provide a custom implementation of abp.message.error if you use a different dialog library.

Example fix

// before
<script src="abp.js"></script>
abp.message.error('Failed!'); // warn only
// after
<script src="abp.js"></script>
<script src="sweetalert.min.js"></script>
<script src="abp.sweet-alert.min.js"></script>
abp.message.error('Failed!'); // shows dialog
Defensive patterns

Strategy: fallback

Validate before calling

if (typeof abp.message === 'undefined' || /not implemented/.test(abp.message.error.toString())) {
  abp.message.error = function (m, t) { alert(m); return $.Deferred().resolve().promise(); };
}

Type guard

function hasMessageAdapter() {
  return typeof abp !== 'undefined' && abp.message &&
    typeof abp.message.error === 'function' &&
    !/not implemented/.test(abp.message.error.toString());
}

Try / catch

try {
  abp.message.error('Load failed');
} catch (e) {
  alert('Load failed');
}

Prevention

When it happens

Trigger: Calling abp.message.error(message, title, options) (e.g. via abp.ajax error handling or abp.ui blocking callbacks) on a page lacking a message API adapter.

Common situations: Missing abp.sweet-alert.min.js + sweetalert library; adapter loaded before abp.js so its overrides are replaced; partial page loads where the adapter script was never included; upgrading abp.js without updating adapter versions.

Related errors


AI-assisted analysis of aspnetboilerplate/aspnetboilerplate@2323c13a15 (2026-09-08). Data as JSON: /api/errors/4c59da8225496a69. Report an issue: GitHub.

Appendix: source

Thrown at src/Abp.Web.Resources/Abp/Framework/scripts/abp.js:458

      };

    abp.message.info = function (message, title, options) {
        abp.log.warn('abp.message.info is not implemented!');
        return showMessage(message, title, options);
    };

    abp.message.success = function (message, title, options) {
        abp.log.warn('abp.message.success is not implemented!');
        return showMessage(message, title, options);
    };

    abp.message.warn = function (message, title, options) {
        abp.log.warn('abp.message.warn is not implemented!');
        return showMessage(message, title, options);
    };

    abp.message.error = function (message, title, options) {
        abp.log.warn('abp.message.error is not implemented!');
        return showMessage(message, title, options);
    };

    abp.message.confirm = function (message, title, callback, options) {
        abp.log.warn('abp.message.confirm is not implemented!');

        var result = confirm(message);
        callback && callback(result);

        if (!$) {
          abp.log.warn('abp.message can not return promise since jQuery is not defined!');
          return null;
        }

        return $.Deferred(function ($dfd) {
          $dfd.resolve();
        });
      };

View on GitHub (pinned to 2323c13a15)