nexatrace-tracker
v0.2.0
Published
NexaTrace error tracking client — lightweight, CDN-free, framework-friendly
Maintainers
Readme
NexaTrace Tracker
Lightweight error tracker for NexaTrace. Works in browser, Node.js, and any JavaScript framework.
Install
npm install nexatrace-trackerBrowser / React / Next.js / Vue
import { initErrorTracker } from "nexatrace-tracker"
const tracker = initErrorTracker({
apiKey: "et_your_api_key_here",
baseUrl: "https://trace.nexagaze.com",
})The tracker automatically catches window.onerror, unhandled promise rejections, and console.error calls. Returns a tracker instance with sendError() and addBreadcrumb() for manual use.
CDN (alternative, no install needed)
<script src="https://trace.nexagaze.com/cdn/tracker.js" data-key="et_your_api_key_here" crossorigin="anonymous"></script>For Next.js App Router, add to app/layout.tsx:
import Script from "next/script"
export default function RootLayout({ children }) {
return (
<html>
<body>
{children}
{process.env.NODE_ENV === "production" && (
<Script
src="https://trace.nexagaze.com/cdn/tracker.js"
data-key={process.env.NEXT_PUBLIC_NEXATRACE_API}
strategy="afterInteractive"
crossOrigin="anonymous"
/>
)}
</body>
</html>
)
}Server-side usage (Node.js)
const fetch = require("node-fetch") // or global fetch in Node 18+
async function reportError(error, req) {
await fetch("https://trace.nexagaze.com/api/webhook", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
api_key: "et_your_api_key_here",
message: error.message,
stack: error.stack,
url: req?.url || "",
language: "node",
}),
})
}Python (Django / Flask / FastAPI)
import requests
def report_error(error, request=None):
requests.post("https://trace.nexagaze.com/api/webhook", json={
"api_key": "et_your_api_key_here",
"message": str(error),
"stack": traceback.format_exc(),
"url": request.url if request else "",
"language": "python",
})PHP (Laravel / Symfony / plain PHP)
function reportError($error, $url = '') {
$ch = curl_init('https://trace.nexagaze.com/api/webhook');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'api_key' => 'et_your_api_key_here',
'message' => $error->getMessage(),
'stack' => $error->getTraceAsString(),
'url' => $url,
'language' => 'php',
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
}Ruby on Rails
require 'net/http'
require 'json'
def report_error(error, request = nil)
uri = URI('https://trace.nexagaze.com/api/webhook')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Post.new(uri)
req['Content-Type'] = 'application/json'
req.body = {
api_key: 'et_your_api_key_here',
message: error.message,
stack: error.backtrace&.join("\n"),
url: request&.url || '',
language: 'ruby'
}.to_json
http.request(req)
endGo
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func reportError(message string, stack string, url string) {
body, _ := json.Marshal(map[string]interface{}{
"api_key": "et_your_api_key_here",
"message": message,
"stack": stack,
"url": url,
"language": "go",
})
http.Post("https://trace.nexagaze.com/api/webhook",
"application/json", bytes.NewBuffer(body))
}Options
| Option | Type | Required | Description |
|-----------|--------|----------|--------------------------------------|
| apiKey | string | yes | Your project API key from NexaTrace |
| baseUrl | string | no | Custom server URL (default: auto) |
API (returned instance)
sendError(data)— manually report an erroraddBreadcrumb(type, message, data)— add a breadcrumb for context
