3box-js
3box-js copied to clipboard
404 Errors reported from 3Box JS library even when wrapped in try/catch
Describe the bug
We are pulling back public display names from our space - some addresses do not have names. We see lots of 404 errors in the console although we believe this is a valid use-case (and we like a nice error free console generally).
// Try open space
const niftySpace = await this._getSpaceSafe(account);
if (niftySpace && niftySpace[SQUAD_NAME]) {
return niftySpace[SQUAD_NAME];
}
// Try get public name
const profile = await this._getProfileSafe(account);
if (profile && profile.name) {
return profile.name;
}
// Fallback to eth account
return account;
}
async _getProfileSafe(account) {
try {
return await Box.getProfile(account);
} catch (e) {
return null;
}
}
async _getSpaceSafe(account) {
try {
return await Box.getSpace(account, NIFTY_FOOTY_SPACE);
} catch (e) {
return null;
}
}
To Reproduce Steps to reproduce the behavior:
- Go to 'https://niftyfootball.cards/league'
- Open console
- See error
Expected behavior Expect null or empty state for missing profiles without error
Screenshots

Desktop (please complete the following information):
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
Smartphone (please complete the following information):
- Browser CHROME with MetaMask
Additional context Discussed on discord with team - happy to report more on discord
@oed - not a huge deal but is there any way to sidestep these 404 errors that you know of? They're muddling up my console as well.

@adamsoffer yeah, unfortunately it's browser behaviour to log all 404 errors so even if we catch them they still show up. We would need to make a breaking change to our apis to fix this.
The error which is being logged does not break the functionality but it spams the console with a lot 404s.
The problem is that 3box-api is returning 404 HTTP status if it's unable to find the profile via address.
In order to make it better, the proposed solution is to return all the responses with 200 HTTP status and embed 3Box statuses inside the returned payload.
Since this doesn't affect the execution, we will reiterate this issue later. For now, there are filters which can clear the appearing 404s in the console. One of the solutions proposed for Chrome with filters:
- https://stackoverflow.com/questions/14337351/can-i-prevent-the-chrome-developer-tools-console-from-logging-image-404-errors