async readFile(filePath) {
    // Normalize path to prevent it from containing any directory changing
    // UNIX patterns which could expose the whole file system, e.g.
    // `http://example.com/parse/apps/../file.txt` requests a file outside
    // of the pages directory scope.
    const normalizedPath = path.normalize(filePath);

    // Abort if the path is outside of the path directory scope
    if (!normalizedPath.startsWith(this.pagesPath)) {
      throw errors.fileOutsideAllowedScope;
    }

    return await fs.readFile(normalizedPath, 'utf-8');
  }
Reads and returns the content of a file at a given path. File reading to
serve content on the static route is only allowed from the pages
directory on downwards.
-----------------------------------------------------------------------
**WARNING:** All file reads in the PagesRouter must be executed by this
wrapper because it also detects and prevents common exploits.
-----------------------------------------------------------------------
@param {String} filePath The path to the file to read.
@returns {Promise<String>} The file content.