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
- Include a message adapter (e.g. abp.sweet-alert.min.js with sweetalert) after abp.js.
- Fix script ordering so the adapter overrides land after abp.js initializes.
- Confirm the adapter assets resolve (network tab) and versions are compatible with your abp.js.
- 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
- Include abp.sweet-alert (or similar) plus its dialog library in the layout.
- Verify adapter load order after abp.js.
- Test error-dialog rendering in your E2E suite.
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
- abp.notify.error is not implemented!
- abp.notify.info is not implemented!
- abp.notify.success is not implemented!
- abp.message.info is not implemented!
- abp.message.success is not implemented!
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)