1.0.1 • Published 3 months ago

@shuami-dev/nuxt-client-error v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

Nuxt Client Error

A utility for handling and displaying client error statuses in Nuxt 3 applications.

Installation

npm install @shuami-dev/nuxt-client-error

Usage

import { useI18n } from "vue-i18n"
import { errorStatus } from "@shuami-dev/nuxt-client-error"

export default {
	setup() {
		const error = ref(new Error("404 Not Found"))
		const { t } = useI18n()

		const status = errorStatus(error, t)

		return { status }
	},
}

With Custom Error

import { useI18n } from "vue-i18n"
import { errorStatus, type CustomError } from "@shuami-dev/nuxt-client-error"

export default {
	setup() {
		const error = ref(new Error("Custom error message"))
		const { t } = useI18n()

		const customError = (err) => {
			if (err && err.message.includes("Custom")) {
				return "This is a custom error"
			}
			return null
		}

		const status = errorStatus(error, t, customError)

		return { status }
	},
}

With Debug Options

import { useI18n } from "vue-i18n"
import { errorStatus } from "@shuami-dev/nuxt-client-error"

export default {
	setup() {
		const error = ref(new Error("500 Server Error"))
		const { t } = useI18n()

		// Enable debug logging on server side only
		const status = errorStatus(error, t, null, {
			debug: true, // Enable debug logging
			serverOnly: true, // Only log on server
		})

		return { status }
	},
}

Required i18n Translations

Your i18n configuration should include the following keys:

{
	"errStatus": {
		"missingParameters": "Missing required parameters",
		"abortError": "Request was aborted",
		"defaultStatusError": "An error occurred",
		"unexpectedError": "Unexpected error",
		"400": "Bad request",
		"401": "Unauthorized",
		"403": "Forbidden",
		"404": "Not found",
		"408": "Timed out",
		"429": "Too many requests",
		"500": "Server error",
		"502": "Bad gateway",
		"503": "Service unavailable",
		"504": "Gateway timeout"
	}
}

License

MIT

1.0.1

3 months ago

1.0.0

3 months ago