Make Npm.require import built-in modules first.

This commit is contained in:
Ben Newman
2017-09-26 14:40:51 -04:00
parent 96008e0274
commit 95dbcf28d7

View File

@@ -1868,6 +1868,21 @@ class JsImage {
// someone passes a Windows-y module identifier.
name = name.split("\\").join("/");
let resolved;
try {
resolved = require.resolve(name);
} catch (e) {
error = error || e;
}
if (resolved &&
resolved === name &&
! files.pathIsAbsolute(resolved)) {
// If require.resolve(id) === id and id is not an absolute
// identifier, it must be a built-in module like fs or http.
return require(resolved);
}
function tryLookup(nodeModulesPath, name) {
var nodeModulesTopDir = files.pathJoin(
nodeModulesPath,
@@ -1896,19 +1911,13 @@ class JsImage {
return require(fullPath);
}
const resolved = require.resolve(name);
if (appDir && resolved) {
const isOutsideAppDir =
files.pathRelative(appDir, resolved).startsWith("..");
if (resolved === name && ! files.pathIsAbsolute(resolved)) {
// If require.resolve(id) === id and id is not an absolute
// identifier, it must be a built-in module like fs or http.
return require(resolved);
}
const isOutsideAppDir = appDir &&
files.pathRelative(appDir, resolved).startsWith("..");
if (! isOutsideAppDir) {
return require(resolved);
if (! isOutsideAppDir) {
return require(resolved);
}
}
throw error || new Error(