avajs/ava · error · TypeError

Missing default factory function export for shared worker pl

Error message

Missing default factory function export for shared worker plugin at ${workerData.filename}

What it means

In the shared worker loader's startup, dynamic import of the plugin module succeeded but its default export is not a function. Shared worker plugins must export a default factory that receives {negotiateProtocol}; a default object, class, or missing export triggers this TypeError. The input at fault is the module at workerData.filename.

Source

Thrown at lib/plugin-support/shared-worker-loader.js:172

		},
	};
}

async function loadFactory() {
	const {default: factory} = await import(workerData.filename);
	return factory;
}

let signalAvailable = () => {
	parentPort.postMessage({type: 'available'});
	signalAvailable = () => {};
};

let fatal;
try {
	const factory = await loadFactory(workerData.filename);
	if (typeof factory !== 'function') {
		throw new TypeError(`Missing default factory function export for shared worker plugin at ${workerData.filename}`);
	}

	factory({
		negotiateProtocol(supported) {
			if (!supported.includes('ava-4')) {
				fatal = new Error(`This version of AVA (${pkg.version}) is not compatible with shared worker plugin at ${workerData.filename}`);
				throw fatal;
			}

			const produceTestWorker = instance => events.emit('testWorker', instance);

			parentPort.on('message', async message => {
				if (message.type === 'register-test-worker') {
					const {id, file, port} = message;
					const instance = new TestWorker(id, file, port);

					activeTestWorkers.set(id, {instance, teardownFns: new Set()});

View on GitHub (pinned to bbfd946322)

Solutions

  1. Add export default function (ava) { ... } to the plugin module
  2. Ensure build tooling (Babel/tsup) does not replace the default export with an object of named exports
  3. Check the resolved filename points at the compiled entry, not a source stub
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at lib/plugin-support/shared-worker-loader.js:172 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of avajs/ava@bbfd946322 (2026-09-02). Data as JSON: /api/errors/5b9c69acec53d374. Report an issue: GitHub.