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
- Set packageName in the request body to a valid non-empty Go package name (lowercase letters/digits, e.g. 'myapp').
- On the frontend, validate the package name field is non-empty before submitting the form.
- 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
- Make packageName a required field in the form with non-empty rule.
- Disable the submit button until packageName is filled.
- When scripting API calls, build payloads from a schema checklist.
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.