Skip to content

Build extensions / Reference

Errors and fixes

Every error says what’s wrong, and most say what to do. Here they all are, by where you’ll meet them.

Thrown by fetch, in OrbTorrent and in tests alike.

Message Fix
Request to host was refused. Add “host” to permissions.network in package.json. Add that exact host to permissions.network. example.com doesn’t cover www.example.com.
Request to address was refused: extensions can only use https:// addresses. Use https://.
Request to host:port was refused: extensions can only use the standard HTTPS port. Use port 443, the default for https://.
Request to address was refused: put credentials in a header, not the address. Move user:password@ into a header, such as Authorization.
Request to host was refused: it points to address, which is on this Mac or your local network. Extensions can’t reach the Mac or local network. Use a service on the internet.
host couldn’t be found. Check the address and your connection. Check the host name, and that the Mac is online. Before a download starts, return skipped.
host couldn’t be reached. It may point to this Mac or your local network, which extensions can’t reach. It pointed to a local address as OrbTorrent connected, or couldn’t be reached. Use a service on the internet, and return skipped if it’s down.
The response was larger than 10 MB, the most an extension can receive. Ask for less, such as one page of results at a time.
The request method “method” isn’t supported. Use GET, HEAD, POST, PUT, PATCH or DELETE.
A request body must be text, or a form from files.formData(). Use JSON.stringify for JSON.
fetch needs an https:// address. Pass a full address, such as https://api.example.com/….
Each form field needs a name. Give every field in files.formData a name.

Thrown by files.sha256, files.formData and files.save.

Message Fix
Reading files isn’t allowed. Add “files”: “contents” to permissions in package.json. Add "files": "contents" to permissions.
Adding files isn’t allowed. Add “files”: “add” to permissions in package.json, or [“contents”, “add”] to read files too. Add "add" to permissions.files.
File n isn’t available: it isn’t downloaded yet, or it isn’t part of this download. Use files only once the download has finished, in afterFinish hooks or afterChecks hooks when it isn’t held, and only files from download.files the user chose to download.
“suffix” can’t be added to a file’s name. A suffix starts with “.”, “-”, “_” or a space, and ends with an extension, such as “.en.srt”. Use a suffix such as .en.srt or -poster.jpg, with no /.
Extensions can’t add .x files, only subtitles, text, images and checksums: … Add only the kinds listed.
“name” already exists. An extension can’t replace a file it didn’t add. Something’s there already, such as subtitles that came with the download. Report it, and don’t try again.
“name” is larger than 10 MB, the most an extension can add in one file. Add a smaller file.
This run has already added 200 files, or nearly 50 MB, the most an extension can add in one run. Add fewer files in one run.
files.save needs the file’s contents: text, or bytes as a Uint8Array. Pass a string, a Uint8Array or an ArrayBuffer.
File n is missing: it was moved or deleted after downloading. The user moved or deleted it. Skip it, and say so in the result.
Pass a file from download.files. Pass a DownloadFile, or its index.
Message Fix
Storage is full: an extension can keep up to 1 MB. Remove keys it no longer needs. Remove old keys, or keep less, such as only recent answers.
A storage key must be text of up to 200 characters. Use a shorter key, such as a hash.

Shown in the Checks tab, and by orb run.

Message Fix
Didn’t finish: message The hook threw. Its log has the stack trace.
Didn’t finish: it took longer than 15 s Before a download starts, do less, or move the work to afterFinish.
Didn’t finish: it kept the processor busy for over 10 s Do less work in loops. Waiting doesn’t count.
Didn’t finish: it used more than 512 MB of memory Hold less in memory at once.
Didn’t finish: It returned something that isn’t a result: return { status, summary }. Return a status and a non-empty summary.
Didn’t finish: Its result’s “files” isn’t a list. Return files: [{ file, status, summary }]. Return files as a list.
Didn’t finish: Its result’s “files” names a file that isn’t part of this download. Pass a file from download.files, or its index. Name only files from download.files.
Didn’t finish: Its result gives name a status that isn’t “passed”, “warning” or “failed”. A file can’t be skipped: leave it out instead.
Didn’t finish: The extension crashed (signal …). Its log may say why. If it keeps happening, report it.
OrbTorrent doesn’t know “method”. Update OrbTorrent, or check the @orbtorrent/api version. The extension uses a newer API than this OrbTorrent has. Update OrbTorrent.
Message Fix
package.json isn’t valid. Each problem is listed under it, such as ““name” must be lowercase letters, digits and hyphens”. Manifest has the rules.
Some entry points are missing. The hook “name” needs src/name.ts: name the file after the hook, or rename the hook.
“module” is a Node.js module, and extensions don’t run in Node.js. Use the API the message names, such as fetch instead of https, or files.save instead of fs. Extensions can’t start programs: OrbTorrent can run one of the user’s own when a download finishes.
TypeScript found problems. Each is listed with its file, line and column.
The extension couldn’t be bundled. Usually a missing package: run npm install.
! The icon assets/icon doesn’t exist, so OrbTorrent shows a plain one. A warning. Add the icon, or remove "icon".
Message Fix
The test has no mock for method address. Add one to “mocks”: { “fetch”: […] }. Add a mock that matches. * in its url matches any text.
The test gives file n no “sha256”. Add one to its download.files entry. Add sha256 to that file in the test.
say which hook to run with “hook” The extension has more than one hook. Name one in the test.
the extension has no “verify” in package.json Add "verify", or remove "verify": true from the test.
It didn’t finish within 10 s. The hook is waiting on something that never comes, such as a promise that never settles. Or raise timeout.
There are no tests. Add a JSON file to tests/.
its result can’t be shown: … The hook returned something OrbTorrent would show as Didn’t finish, for the reason given.

From orb dev, orb run, orb downloads and orb install.

Message Fix
OrbTorrent isn’t reachable. Open OrbTorrent, and turn on Allow development extensions on the Develop tab of its Extensions page. npx orb doctor says what’s missing.
You chose not to load it in OrbTorrent. OrbTorrent asked whether to load the folder, and the answer was no. Run the command again, and allow it.
OrbTorrent couldn’t load it. The built manifest isn’t valid: the problems are listed. Run npx orb build.
No download matches “name”. Your downloads: Use part of one of the names listed, or npx orb downloads.
“name” matches 3 downloads. Use one of these names or info hashes: Use more of the name, or the info hash.
“name” hasn’t finished downloading, so its files aren’t all there. Choose a finished download. An afterFinish hook needs a finished download.
“name” hasn’t finished, and no check is holding it, so there’s nothing to report yet. Choose a finished or held download. An afterChecks hook needs a download that’s finished, or held by a check.
The user chose not to install it. The install was cancelled in OrbTorrent.
OrbTorrent closed the connection. OrbTorrent quit, or development extensions were turned off.

Shown on the Extensions page.

It says Fix
Needs setup A required setting is empty. Its hooks are skipped until it’s filled in.
Needs a newer OrbTorrent It was built with a newer @orbtorrent/api than this OrbTorrent supports. Update OrbTorrent, or build with the API version orb doctor reports.
“folder” couldn’t be loaded The extension’s package.json isn’t valid. Its page lists why.