Да, это правда, если файл существует, но он пустой, xhr.responseURL в любом случае содержит строку (url / path).

у создать расширение Chrome, которое сможет читать локальные файлы и использовать написанный в них код. Мой простой код:

const readFile = (filePath) => {
  return new Promise(function (resolve, reject) {
    const xhr = new XMLHttpRequest()
    xhr.onerror = (error) => {
      reject(error)
    }
    xhr.onreadystatechange = function () {
      if (xhr.readyState === 4) {
        resolve(xhr.response)
      }
    }
    xhr.ontimeout = function () {
      reject('timeout')
    }
    xhr.open('GET', filePath)
    xhr.send()
  })
}

async function () {
    const code = await readFile(jsFilePath)
    console.log(code)
}

Этот код успешно работает, когда мой filePath правильный. Но когда это не консоль Chrome выдает эту ошибку:

GET file:///home/maxim/Documents/test.jsa net::ERR_FILE_NOT_FOUND

Обычный блок try / catch не работает

async function () {
  try {
    const code = await readFile(jsFilePath)
    console.log(code)
  } catch (e) {
    console.log(e)
  }
}

Как я могу поймать этот тип ошибок?

Ответы на вопрос(1)

Ваш ответ на вопрос