This sample project demonstrates how to use the bugsplat package to report TypeScript errors in Deno applications. Before continuing with the tutorial please make sure you have completed the following checklist:
Add an import from bugsplat-js via esm.sh:
import { BugSplat } from 'https://esm.sh/bugsplat@8.0.1';
Create a new instance of the BugSplat
class with the name of your BugSplat database, the name of your application, and the version of your application:
const bugsplat = new BugSplat('DatabaseName', 'AppName', '1.0.0');
Use the bugsplat
instance to capture errors that originate inside of try-catch blocks:
try {
throw new Error("BugSplat");
} catch (error) {
await bugsplat.post(error);
}
Use bugsplat
to post errors from promise rejections:
Promise.reject(new Error("BugSplat!")).catch(error => bugsplat.post(error, {}));
You can also attach a file to your error post by passing a BugSplatOptions
object containing with a value for additionalFormDataParams
property.
await bugsplat.post(error, getAdditionalOptionsWithLogFile());
function getAdditionalOptionsWithLogFile() {
const filename = 'log.txt';
return {
additionalFormDataParams: [{
key: 'file',
value: new File([Deno.readFileSync(filename)], filename),
filename: filename,
}],
};
}
Clone the my-deno-crasher repository:
git clone https://github.com/BugSplat-Git/my-deno-crasher
Set your current directory to my-deno-crasher
.
cd my-deno-crasher
Run the sample with the --allow-net
and --allow-read
flags to allow BugSplat to post an error to our backend and read the log file respectively.
deno run --allow-net --allow-read main.ts
After posting an error, navigate to the Crashes page. You should see a new crash report for the application you just configured. Click the link in the ID column to see details about your crash on the Crashes page:
That’s it! Your application is now configured to post error reports to BugSplat.
In addition to the configuration demonstrated above, there are a few public methods that can be used to customize your BugSplat integration:
bugsplat.setDefaultAppKey(appKey); // Additional metadata that can be queried via BugSplats web application
bugsplat.setDefaultUser(user); // The name or id of your user
bugsplat.setDefaultEmail(email); // The email of your user
bugsplat.setDefaultDescription(description); // Additional info about your crash that gets reset after every post
async bugsplat.post(error, options); // Posts an arbitrary Error object to BugSplat
// If the values options.appKey, options.user, options.email, options.description are set the corresponding default values will be overwritten
// Returns a promise that resolves with properties: error (if there was an error posting to BugSplat), response (the response from the BugSplat crash post API), and original (the error passed by bugsplat.post)
BugSplat loves open-source software! Please check out our project on GitHub and send us a Pull Request.