Budibase/budibase · error
package.json is missing one of 'name', 'version' or 'descrip
Error message
package.json is missing one of 'name', 'version' or 'description'.
What it means
verify parses package.json and requires the name, version and description fields to be present and non-empty before validating schema.json. These are the metadata used to register and display the plugin, so verify refuses incomplete manifests.
Source
Thrown at packages/cli/src/plugins/index.ts:137
type,
name,
description,
version,
})
}
async function verify() {
// will throw errors if not acceptable
checkInPlugin()
console.log(info("Verifying plugin..."))
const schema = fs.readFileSync("schema.json", "utf8")
const pkg = fs.readFileSync("package.json", "utf8")
let name, version
try {
const schemaJson = JSON.parse(schema)
const pkgJson = JSON.parse(pkg)
if (!pkgJson.name || !pkgJson.version || !pkgJson.description) {
throw new Error(
"package.json is missing one of 'name', 'version' or 'description'."
)
}
name = pkgJson.name
version = pkgJson.version
plugins.validate(schemaJson)
return { name, version }
} catch (err: any) {
if (err && err.message && err.message.includes("not valid JSON")) {
console.log(error(`schema.json is not valid JSON: ${err.message}`))
} else {
console.log(error(`Invalid schema/package.json: ${err.message}`))
}
}
}
async function build() {
const verified = await verify()View on GitHub (pinned to a81a902e9a)
Solutions
- Open package.json and add non-empty name, version and description fields, then re-run verify
- Run `npm pkg get name version description` to see which field is missing or empty
- Re-scaffold from the plugin template if the manifest is severely incomplete
Example fix
// before
{
"name": "my-plugin"
}
// after
{
"name": "my-plugin",
"version": "1.0.0",
"description": "My Budibase plugin"
} Defensive patterns
Strategy: validation
Validate before calling
const pkg = JSON.parse(fs.readFileSync("package.json", "utf8"))
const missing = ["name", "version", "description"].filter(k => !pkg[k])
if (missing.length) throw new Error(`package.json missing: ${missing.join(", ")}`) Type guard
const hasRequiredPkgFields = (p: any): p is { name: string; version: string; description: string } =>
Boolean(p && p.name && p.version && p.description) Try / catch
try {
await verifyPlugin()
} catch (err) {
if ((err as Error).message.includes("missing one of 'name', 'version'")) {
// fix package.json fields then retry
} else throw err
} Prevention
- Always fill in name, version and description when scaffolding package.json
- Run `npm pkg get name version description` as a preflight check
- Validate package.json in CI before running plugin verify
When it happens
Trigger: Running `budibase-plugins verify` (via verified) where the parsed package.json is missing or has an empty/falsy name, version, or description field.
Common situations: Hand-authored package.json with description omitted; version left as empty string; a minimal package.json from `npm init -y` where description was never added; fields accidentally removed during edits.
Related errors
- Please run in a plugin directory - must contain package.json
- Please run in a plugin directory - must contain schema.json
- No skeleton found in latest release.
- File is not valid - cannot upload.
- Plugin must be compressed into a gzipped tarball.
AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29).
Data as JSON: /api/errors/8835f24aa8eba3c9.
Report an issue: GitHub.