Node.js — Check if a Path is a File URL

Node.js includes the needed functionality to interact with files on your local hard disk. Typically, you’re referencing files on disk using a file path. This path can have different formats, like a relative or an absolute path or a file URL.

With the transition to ECMAScript modules developers are going to interact with file URLs. The reason for that: modules are loaded via file URLs, like import './my-module.js'.

This tutorial shows you how to detect whether a given path is a file: URL. We’re also creating a helper function detecting whether a given path (as a string value) represents a file: URL.

Node.js Series Overview

  1. String Replace All Appearances
  2. Remove All Whitespace From a String in JavaScript
  3. Generate a Random ID or String in Node.js or JavaScript
  4. Remove Extra Spaces From a String in JavaScript or Node.js
  5. Remove Numbers From a String in JavaScript or Node.js
  6. Get the Part Before a Character in a String in JavaScript or Node.js
  7. Get the Part After a Character in a String in JavaScript or Node.js
  8. How to Check if a Value is a String in JavaScript or Node.js
  9. Check If a String Includes All Strings in JavaScript/Node.js/TypeScript
  10. Check if a Value is a String in JavaScript and Node.js
  11. Limit and Truncate a String to a Given Length in JavaScript and Node.js
  12. Split a String into a List of Characters in JavaScript and Node.js
  13. How to Generage a UUID in Node.js
  14. Reverse a String in JavaScript or Node.js
  15. Split a String into a List of Lines in JavaScript or Node.js
  16. Split a String into a List of Words in JavaScript or Node.js
  17. Detect if a String is in camelCase Format in Javascript or Node.js
  18. Check If a String Is in Lowercase in JavaScript or Node.js
  19. Check If a String is in Uppercase in JavaScript or Node.js
  20. Get the Part After First Occurrence in a String in JavaScript or Node.js
  21. Get the Part Before First Occurrence in a String in JavaScript or Node.js
  22. Get the Part Before Last Occurrence in a String in JavaScript or Node.js
  23. Get the Part After Last Occurrence in a String in JavaScript or Node.js
  24. How to Count Words in a File
  25. How to Shuffle the Characters of a String in JavaScript or Node.js
  26. Append Characters or Words to a String in JavaScript or Node.js
  27. Check if a String is Empty in JavaScript or Node.js
  28. Ensure a String Ends with a Given Character in JavaScript or Node.js
  29. Left-Trim Characters Off a String in JavaScript or Node.js
  30. Right-Trim Characters Off a String in JavaScript or Node.js
  31. Lowercase the First Character of a String in JavaScript or Node.js
  32. Uppercase the First Character of a String in JavaScript or Node.js
  33. Prepend Characters or Words to a String in JavaScript or Node.js
  34. Check if a String is a Number
  35. Convert a String to Buffer
  36. Prevent Line Breaks in String Template Literals
  37. How to Implement a Custom `toString` Method (Coming soon)
  38. What Is `Symbol.toStringTag` and How to Use It (Coming soon)

Determine Whether a Path Points to a File URL

When interacting with files you may think of using the Node.js node:fs core module. Yet, thenode:fs module won’t help here because we’re going to interact with URLs and need to find another way. We can’t use the fs.stats() method either, because file: URLs represent paths on the disk and there’s no file-specific information we need.

Instead, we need to take one step back and should use the Node.js global URL class (that implements the WHATWG URL standard). The URL class is helpful to determine whether a given input maps to a file: URL.

Here’s the isFileUrl utility method that you can use in your projects. Inputs

/**
 * Determine whether the given `path` is a `file:` URL. This method
 * accepts a string value and a URL instance. You may adjust the
 * allowed parameters if you don’t want to support both types.
 *
 * @param {String|URL} path
 *
 * @returns {Boolean}
 */
function isFileUrl(path) {  
  // `path` is neither a string nor a URL -> early return
  if (typeof path !== 'string' && !(path instanceof URL)) {
    return false
  }

  try {
    const url = new URL(path)

    return url.protocol === 'file:'
  } catch (error) {
    return false
  }
}

isFileUrl(import.meta.resolve('.'))  
isFileUrl('file:///home/users/marcus')  
isFileUrl(new URL('file:///home/users/marcus'))  
// true

isFileUrl(null)  
isFileUrl('/home/users/marcus')  
// false

We have related tutorials here on Future Studio to this tutorial. You might be interested in one of the following articles:

Enjoy!


Mentioned Resources

Explore the Library

Find interesting tutorials and solutions for your problems.