@@ -1540,7 +1540,12 @@ function pathToFileURL(filepath, options = kEmptyObject) {
1540
1540
if ( ( windows ?? isWindows ) && StringPrototypeStartsWith ( filepath , '\\\\' ) ) {
1541
1541
const outURL = new URL ( 'file://' ) ;
1542
1542
// UNC path format: \\server\share\resource
1543
- const hostnameEndIndex = StringPrototypeIndexOf ( filepath , '\\' , 2 ) ;
1543
+ // Handle extended UNC path and standard UNC path
1544
+ // "\\?\UNC\" path prefix should be ignored.
1545
+ // Ref: https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation
1546
+ const isExtendedUNC = StringPrototypeStartsWith ( filepath , '\\\\?\\UNC\\' ) ;
1547
+ const prefixLength = isExtendedUNC ? 8 : 2 ;
1548
+ const hostnameEndIndex = StringPrototypeIndexOf ( filepath , '\\' , prefixLength ) ;
1544
1549
if ( hostnameEndIndex === - 1 ) {
1545
1550
throw new ERR_INVALID_ARG_VALUE (
1546
1551
'path' ,
@@ -1555,7 +1560,7 @@ function pathToFileURL(filepath, options = kEmptyObject) {
1555
1560
'Empty UNC servername' ,
1556
1561
) ;
1557
1562
}
1558
- const hostname = StringPrototypeSlice ( filepath , 2 , hostnameEndIndex ) ;
1563
+ const hostname = StringPrototypeSlice ( filepath , prefixLength , hostnameEndIndex ) ;
1559
1564
outURL . hostname = domainToASCII ( hostname ) ;
1560
1565
outURL . pathname = encodePathChars (
1561
1566
RegExpPrototypeSymbolReplace ( backslashRegEx , StringPrototypeSlice ( filepath , hostnameEndIndex ) , '/' ) ,
0 commit comments