flipped-aurora/gin-vue-admin · error

[filepath:%s]注入失败!

Error message

[filepath:%s]注入失败!

What it means

After successfully opening the file, Base.Format writes the AST via format.Node; if the printer or underlying writer fails (disk full, closed file, broken pipe) the error is wrapped with '注入失败!'. It signals the AST-to-source write-back stage failed, not the parsing or opening stages.

Source

Thrown at server/utils/ast/interfaces_base.go:57

	return nil
}

func (a *Base) Format(filename string, writer io.Writer, file *ast.File) error {
	fileSet := a.FileSet
	if fileSet == nil {
		fileSet = token.NewFileSet()
	}
	if writer == nil {
		open, err := os.OpenFile(filename, os.O_WRONLY|os.O_TRUNC, 0666)
		defer open.Close()
		if err != nil {
			return errors.Wrapf(err, "[filepath:%s]打开文件失败!", filename)
		}
		writer = open
	}
	err := format.Node(writer, fileSet, file)
	if err != nil {
		return errors.Wrapf(err, "[filepath:%s]注入失败!", filename)
	}
	return nil
}

// RelativePath 绝对路径转相对路径
func (a *Base) RelativePath(filePath string) string {
	server := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server)
	hasServer := strings.Index(filePath, server)
	if hasServer != -1 {
		filePath = strings.TrimPrefix(filePath, server)
		keys := strings.Split(filePath, string(filepath.Separator))
		filePath = path.Join(keys...)
	}
	return filePath
}

// AbsolutePath 相对路径转绝对路径
func (a *Base) AbsolutePath(filePath string) string {

View on GitHub (pinned to 3136500ef3)

Solutions

  1. Check disk space/quota (df -h) and free space or fix quota
  2. Verify the output volume/filesystem is writable
  3. Confirm the *ast.File passed to Format came from Parse and was not hand-constructed with invalid nodes
  4. Retry the generation after addressing the I/O condition
Defensive patterns

Strategy: try-catch

Validate before calling

if free, _ := sysDiskFree(path); free < 10<<20 { return errors.New("insufficient disk space for codegen") }

Try / catch

if err := base.Format(filename, file); err != nil { if !strings.Contains(err.Error(), "注入失败") == false { /* handle writeback failure: retry or restore from backup */ } ; return err }

Prevention

When it happens

Trigger: Calling Base.Format when format.Node returns an error — typically the file descriptor became invalid, the disk is full, or an AST node passed in is invalid for printing; also when the deferred-open pattern yields a writer whose write later fails.

Common situations: Disk quota exceeded on CI runners; writing to a container layer that is read-only; piping output somewhere that closes early; extremely rare invalid AST from manual ast.NewFile construction.

Related errors


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