2424const { JSON , Object, Reflect } = primordials ;
2525
2626const { NativeModule } = require ( 'internal/bootstrap/loaders' ) ;
27- const { pathToFileURL } = require ( 'internal/url' ) ;
27+ const { pathToFileURL, fileURLToPath , URL } = require ( 'internal/url' ) ;
2828const { deprecate } = require ( 'internal/util' ) ;
2929const vm = require ( 'vm' ) ;
3030const assert = require ( 'internal/assert' ) ;
@@ -824,7 +824,7 @@ Module.runMain = function() {
824824 Module . _load ( process . argv [ 1 ] , null , true ) ;
825825} ;
826826
827- Module . createRequireFromPath = ( filename ) => {
827+ function createRequireFromPath ( filename ) {
828828 // Allow a directory to be passed as the filename
829829 const trailingSlash =
830830 filename . endsWith ( path . sep ) || path . sep !== '/' && filename . endsWith ( '\\' ) ;
@@ -838,7 +838,34 @@ Module.createRequireFromPath = (filename) => {
838838
839839 m . paths = Module . _nodeModulePaths ( m . path ) ;
840840 return makeRequireFunction ( m ) ;
841- } ;
841+ }
842+
843+ Module . createRequireFromPath = createRequireFromPath ;
844+
845+ const createRequireError = 'must be a file URL object, file URL string, or' +
846+ 'absolute path string' ;
847+
848+ function createRequire ( filename ) {
849+ let filepath ;
850+ if ( typeof filename === 'object' && ! ( filename instanceof URL ) ) {
851+ throw new ERR_INVALID_ARG_VALUE ( 'filename' , filename , createRequireError ) ;
852+ } else if ( typeof filename === 'object' ||
853+ typeof filename === 'string' && ! path . isAbsolute ( filename ) ) {
854+ try {
855+ filepath = fileURLToPath ( filename ) ;
856+ } catch {
857+ throw new ERR_INVALID_ARG_VALUE ( 'filename' , filename ,
858+ createRequireError ) ;
859+ }
860+ } else if ( typeof filename !== 'string' ) {
861+ throw new ERR_INVALID_ARG_VALUE ( 'filename' , filename , createRequireError ) ;
862+ } else {
863+ filepath = filename ;
864+ }
865+ return createRequireFromPath ( filepath ) ;
866+ }
867+
868+ Module . createRequire = createRequire ;
842869
843870Module . _initPaths = function ( ) {
844871 var homeDir ;
0 commit comments