'use strict'; require('../common'); const assert = require('assert'); const { registerHooks } = require('module'); // This tests that the invalid return values in resolve hooks are not accepted. const hook = registerHooks({ resolve(specifier, context, nextLoad) { const result = { shortCircuit: true }; if (specifier === 'array') { result.url = []; } else if (specifier === 'null') { result.url = null; } else if (specifier === 'number') { result.url = 1; } else if (specifier === 'boolean') { result.url = true; } else if (specifier === 'function') { result.url = () => {}; } else if (specifier === 'object') { result.url = {}; } return result; }, }); for (const item of ['undefined', 'array', 'null', 'number', 'boolean', 'function', 'object']) { assert.throws(() => { require(item); }, { code: 'ERR_INVALID_RETURN_PROPERTY_VALUE', message: /"url" from the "resolve" hook/, }); } hook.deregister();