flipped-aurora/gin-vue-admin · warning

PackageName不能为空!

Error message

PackageName不能为空!

What it means

When creating an auto-code package via sysAutoCodePackage.Create, the request is validated by a switch chain. This error fires when info.PackageName is empty: a package without a name cannot become a Go module/package name for generated code. It is a pure input-validation guard thrown before any DB access.

Source

Thrown at server/service/system/auto_code_package.go:37

	"github.com/pkg/errors"
	"gorm.io/gorm"
)

var AutoCodePackage = new(autoCodePackage)

type autoCodePackage struct{}

// Create 创建包信息
// @author: [piexlmax](https://github.com/piexlmax)
// @author: [SliverHorn](https://github.com/SliverHorn)
func (s *autoCodePackage) Create(ctx context.Context, info *request.SysAutoCodePackageCreate) error {
	switch {
	case info.Template == "":
		return errors.New("模板不能为空!")
	case info.Template == "page":
		return errors.New("page为表单生成器!")
	case info.PackageName == "":
		return errors.New("PackageName不能为空!")
	case token.IsKeyword(info.PackageName):
		return errors.Errorf("%s为go的关键字!", info.PackageName)
	case info.Template == "package":
		if info.PackageName == "system" || info.PackageName == "example" {
			return errors.New("不能使用已保留的package name")
		}
	default:
		break
	}
	if !errors.Is(global.GVA_DB.Where("package_name = ? and template = ?", info.PackageName, info.Template).First(&model.SysAutoCodePackage{}).Error, gorm.ErrRecordNotFound) {
		return errors.New("存在相同PackageName")
	}
	create := info.Create()
	return global.GVA_DB.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
		err := tx.Create(&create).Error
		if err != nil {
			return errors.Wrap(err, "创建失败!")
		}

View on GitHub (pinned to 3136500ef3)

Solutions

  1. Set packageName in the request body to a valid non-empty Go package name (lowercase letters/digits, e.g. 'myapp').
  2. On the frontend, validate the package name field is non-empty before submitting the form.
  3. If calling the service directly, ensure request.SysAutoCodeCreate is fully populated instead of a zero value.

Example fix

// before
{ "template": "package" }
// after
{ "template": "package", "packageName": "myapp", "description": "my business package" }
Defensive patterns

Strategy: validation

Validate before calling

const packageName = form.packageName?.trim()
if (!packageName) {
  throw new Error('PackageName不能为空!')
}
await api.createPackage({ template: form.template, packageName })

Try / catch

try {
  await api.createPackage(payload)
} catch (e) {
  if (e?.msg === 'PackageName不能为空!') {
    formRef.value.validateField('packageName')
  } else { throw e }
}

Prevention

When it happens

Trigger: Calling the create-package API (POST autoCode/package) with a body whose packageName field is omitted or empty string, e.g. {"template":"package"} without packageName.

Common situations: Frontend form submitting before the package-name input is filled; API scripts/curl calls missing the field; code generators invoking the service directly with a zero-valued request struct.

Understand the failure class

Background: "Missing required field" and "field is required" errors: why libraries reject payloads that omit mandatory fields — this error's family across 20 libraries.

Related errors


AI-assisted analysis of flipped-aurora/gin-vue-admin@3136500ef3 (2026-08-31). Data as JSON: /api/errors/1a8b2bcde0dae006. Report an issue: GitHub.