@@ -1530,7 +1530,12 @@ function pathToFileURL(filepath, options = kEmptyObject) {
1530
1530
if ( ( windows ?? isWindows ) && StringPrototypeStartsWith ( filepath , '\\\\' ) ) {
1531
1531
const outURL = new URL ( 'file://' ) ;
1532
1532
// UNC path format: \\server\share\resource
1533
- const hostnameEndIndex = StringPrototypeIndexOf ( filepath , '\\' , 2 ) ;
1533
+ // Handle extended UNC path and standard UNC path
1534
+ // "\\?\UNC\" path prefix should be ignored.
1535
+ // Ref: https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation
1536
+ const isExtendedUNC = StringPrototypeStartsWith ( filepath , '\\\\?\\UNC\\' ) ;
1537
+ const prefixLength = isExtendedUNC ? 8 : 2 ;
1538
+ const hostnameEndIndex = StringPrototypeIndexOf ( filepath , '\\' , prefixLength ) ;
1534
1539
if ( hostnameEndIndex === - 1 ) {
1535
1540
throw new ERR_INVALID_ARG_VALUE (
1536
1541
'path' ,
@@ -1545,7 +1550,7 @@ function pathToFileURL(filepath, options = kEmptyObject) {
1545
1550
'Empty UNC servername' ,
1546
1551
) ;
1547
1552
}
1548
- const hostname = StringPrototypeSlice ( filepath , 2 , hostnameEndIndex ) ;
1553
+ const hostname = StringPrototypeSlice ( filepath , prefixLength , hostnameEndIndex ) ;
1549
1554
outURL . hostname = domainToASCII ( hostname ) ;
1550
1555
outURL . pathname = encodePathChars (
1551
1556
RegExpPrototypeSymbolReplace ( backslashRegEx , StringPrototypeSlice ( filepath , hostnameEndIndex ) , '/' ) ,
0 commit comments