Skip to content

Commit 3013ef1

Browse files
authored
Update generate-pnp-map-api.tpl.js
1 parent aa4e713 commit 3013ef1

File tree

1 file changed

+37
-4
lines changed

1 file changed

+37
-4
lines changed

src/util/generate-pnp-map-api.tpl.js

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -646,12 +646,45 @@ exports.setup = function setup() {
646646
if (!enableNativeHooks) {
647647
return originalModuleResolveFilename.call(Module, request, parent, isMain, options);
648648
}
649+
650+
let issuers;
651+
652+
if (options) {
653+
const optionNames = new Set(Object.keys(optionNames));
654+
optionNames.delete('paths');
655+
656+
if (options.size > 0) {
657+
throw makeError(`UNSUPPORTED`, `Some options passed to require() aren't supported by PnP yet (${Array.from(optionNames).join(', ')})`);
658+
}
659+
660+
if (options.paths) {
661+
issuers = options.paths.map(entry => `${path.normalize(entry)}/`);
662+
}
663+
}
664+
665+
if (!issuers) {
666+
const issuerModule = getIssuerModule(parent);
667+
const issuer = issuerModule ? issuerModule.filename : `${process.cwd()}/`;
668+
669+
issuers = [issuer];
670+
}
671+
672+
let firstError;
649673

650-
const issuerModule = getIssuerModule(parent);
651-
const issuer = issuerModule ? issuerModule.filename : process.cwd() + '/';
674+
for (const issuer of issuers) {
675+
let resolution;
676+
677+
try {
678+
resolution = exports.resolveRequest(request, issuer);
679+
} catch (error) {
680+
firstError = firstError || error;
681+
continue;
682+
}
652683

653-
const resolution = exports.resolveRequest(request, issuer);
654-
return resolution !== null ? resolution : request;
684+
return resolution !== null ? resolution : request;
685+
}
686+
687+
throw firstError;
655688
};
656689

657690
const originalFindPath = Module._findPath;

0 commit comments

Comments
 (0)