emberjs/ember.js · error · Error

Could not find module ${name} required by: ${referrerName}

Error message

Could not find module ${name} required by: ${referrerName}

What it means

The Ember loader's missingModule throws this when internalRequire cannot resolve a module name in its registry and the caller (referrer) is known. It means a `require('some/module')` or inter-module dependency pointed at a module that was never registered with the loader. The referrer is included so you can see which importing module failed.

Source

Thrown at packages/loader/lib/index.js:18

/* eslint-disable no-var */
/* eslint-disable-next-line no-unused-vars */
var define, require;

(function () {
  if (typeof globalThis.define === 'function' && typeof globalThis.require === 'function') {
    define = globalThis.define;
    require = globalThis.require;

    return;
  }

  var registry = Object.create(null);
  var seen = Object.create(null);

  function missingModule(name, referrerName) {
    if (referrerName) {
      throw new Error('Could not find module ' + name + ' required by: ' + referrerName);
    } else {
      throw new Error('Could not find module ' + name);
    }
  }

  function internalRequire(_name, referrerName) {
    var name = _name;
    var mod = registry[name];

    if (!mod) {
      name = name + '/index';
      mod = registry[name];
    }

    var exports = seen[name];

    if (exports !== undefined) {
      return exports;

View on GitHub (pinned to 26f97246a8)

Solutions

  1. Verify the module id string matches the file's registered module name exactly (check spelling/casing).
  2. Ensure the defining file is included in the build/imported before the requiring module runs.
  3. Run the build and confirm the addon/package providing the module is installed and listed in dependencies.
  4. Use the referrer in the message to open the importing module and fix the import path.

Example fix

// before
const helper = require('my-app/helpers/format-dat');
// after
const helper = require('my-app/helpers/format-date');
Defensive patterns

Strategy: try-catch

Validate before calling

function isModuleLoaded(name){ try { require(name); return true; } catch(e){ return false; } }
if (!isModuleLoaded('my-app/helpers/format-date')) { console.error('module not registered'); }

Type guard

function hasModule(registry, name) { return typeof registry[name] === 'function'; }

Try / catch

let mod;
try { mod = require('my-app/helpers/format-date'); }
catch (e) { if (/^Could not find module/.test(e.message)) { mod = fallbackModule; } else { throw e; } }

Prevention

When it happens

Trigger: internalRequire('foo', 'bar') is called, `registry['foo']` is undefined, and a non-empty referrerName is passed. Typical when a module is required before its defining file is loaded or the module id is misspelled.

Common situations: Ember addon or app imports a module that isn't in the build (tree-shaken out, addon not installed, wrong import path); AMD/loader-based environments where a file failed to register; typos in relative import paths after refactors.

Related errors


AI-assisted analysis of emberjs/ember.js@26f97246a8 (2026-09-01). Data as JSON: /api/errors/f697f32c9a095326. Report an issue: GitHub.