caicloud / nirvana

Golang Restful API Framework for Productivity

Home Page:https://caicloud.github.io/nirvana/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nirvana api print fatal error invalid character '\x1b' looking for beginning of value

narrowizard opened this issue · comments

commented

Is this a BUG REPORT or FEATURE REQUEST?:

Uncomment only one, leave it on its own line:

/kind bug

/kind feature

What happened:
nirvana print a fatal error when running nirvana api.

$ nirvana api --output="./api"
INFO  0611-14:39:33.220+08 api.go:87 | No packages are specified, defaults to pkg/apis
FATAL 0611-14:40:03.467+08 api.go:61 | invalid character '\x1b' looking for beginning of value

What you expected to happen:
the error is unexpected.
How to reproduce it (as minimally and precisely as possible):

Anything else we need to know?:
after some searching, i find the error is reported by json.Unmarshal.
nirvana api generated a nirvana-generated*** file and run it to get a json formated api-definition string, then output the string to standard output(cmd). and read the string from standard output(cmd), decode it to &api.Definitions{}.
the error occur when my project output something to cmd.

std.out

nirvana-generated****

cmd := exec.Command("go", "run", path)
cmd.Stderr = os.Stderr
buf := bytes.NewBuffer(nil)
cmd.Stdout = buf
if err := cmd.Run(); err != nil {
return nil, err
}
definitions := &api.Definitions{}
if err := json.NewDecoder(buf).Decode(definitions); err != nil {
return nil, err
}
return definitions, nil

So you are logging something in the init function of descriptors or modifiers file?

commented

not exactly, init function in other package which is imported by descriptors. @iawia002

Got it, I'll fix this when I'm free (may take days)