Semantic-Org/Semantic-UI · error

Cannot search. No source used, and Semantic API module was…

Error message

Cannot search. No source used, and Semantic API module was not included

What it means

Search has two ways to get data: a local source (settings.source as object/array) or a remote call through the Semantic UI api module ($.fn.api). In query() (search.js:528-538) it picks local only when source is a plain object/array, otherwise falls to module.search.remote only if $.fn.api exists; if neither holds it logs error.source. It is also logged in search.object() (search.js:619-621) when the source argument is undefined/false.

Solutions

  1. Provide a local dataset: settings.source = [{ title: '...' }, ...] so search uses the local path.
  2. Include the api module before search: load semantic-ui-api.js (or the api sub-module) and set apiSettings.url so remote search is available.
  3. Confirm $.fn.api is defined at runtime (typeof $.fn.api !== 'undefined') before relying on remote search.

Example fix

// before
$('.ui.search').search(); // no source, no api module -> [81]

// after (local)
$('.ui.search').search({ source: [{title:'A'}, {title:'B'}] });
// after (remote, requires semantic-ui-api)
$('.ui.search').search({ type: 'category', apiSettings: { url: '/api/search?q={query}' } });
Defensive patterns

Strategy: validation

Validate before calling

// Ensure at least one data path is available
var hasLocal = $.isPlainObject(cfg.source) || $.isArray(cfg.source);
var hasApi = typeof $.fn.api !== 'undefined';
if (!hasLocal && !hasApi) {
  throw new Error('Search needs a local source or the semantic-ui-api module loaded.');
}
$('.ui.search').search(cfg);

Type guard

function isLocalSource(s){ return $.isPlainObject(s) || $.isArray(s); }

Prevention

When it happens

Trigger: Initializing $('.ui.search').search() with no source setting while the api module (semantic-api) is not loaded; OR calling .search('search local', term) / object search with settings.source unset; OR settings.source is a string (e.g. a URL) instead of an object/array and $.fn.api is undefined.

Common situations: Forgetting to include semantic-ui-api.js after semantic-ui-search.js; expecting the api module to ship with search by default; setting source to a URL string thinking search will fetch it directly (search.js only treats plain objects/arrays as local data); tree-shaking/bundling that drops the api module.

Related errors


AI-assisted analysis of Semantic-Org/Semantic-UI@597843ab84 (2026-08-13). Data as JSON: /api/errors/16aed1c6c0a95e04. Report an issue: GitHub.

Appendix: source

Thrown at src/definitions/modules/search.js:1299

  onSearchQuery  : function(query){},
  onResults      : function(response){},

  onResultsOpen  : function(){},
  onResultsClose : function(){},

  className: {
    animating : 'animating',
    active    : 'active',
    empty     : 'empty',
    focus     : 'focus',
    hidden    : 'hidden',
    loading   : 'loading',
    results   : 'results',
    pressed   : 'down'
  },

  error : {
    source          : 'Cannot search. No source used, and Semantic API module was not included',
    noResults       : 'Your search returned no results',
    logging         : 'Error in debug logging, exiting.',
    noEndpoint      : 'No search endpoint was specified',
    noTemplate      : 'A valid template name was not specified.',
    oldSearchSyntax : 'searchFullText setting has been renamed fullTextSearch for consistency, please adjust your settings.',
    serverError     : 'There was an issue querying the server.',
    maxResults      : 'Results must be an array to use maxResults setting',
    method          : 'The method you called is not defined.'
  },

  metadata: {
    cache   : 'cache',
    results : 'results',
    result  : 'result'
  },

  regExp: {
    escape     : /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,

View on GitHub (pinned to 597843ab84)