Skip to content

Cannot have body parameter in controller defined in separate file #458

@ZPiDER666

Description

@ZPiDER666

i am trying to define a controller in its own file with a body param like this:

import { http, HttpBody, JSONResponse } from "@deepkit/http"
export class TestAPI2 {
	@http.PUT('/testParams')
	async testParams(body: HttpBody<any>) {
		const r = new JSONResponse({ body })
		r.header('content-type', 'application/json')
		return r
	}
}

but i get a runtime error when calling this endpoint.

looking into the reasons, i found this running compiled code:

if (!parameterResolverFound_6) parameters.body = _injector.get(_context.classType_6);

this line runs into the error, because _context == {}
it looks like the controllers originating in a separate file are initialized with an empty context.
unfortunately i cant really figure out where this code originates, as my prime suspect router.ts does not seem to contain any code ending up in this line.

note that when i define this class in the same file as my App.ts i do not run into this issue (but of course for my complex controllers this is not an option).
what is even more confusing is that this has been working previously and i suspect a version problem.

my dependencies are:

"@deepkit/framework": "^1.0.1-alpha.85",
"@deepkit/http": "^1.0.1-alpha.85",
"@deepkit/type": "^1.0.1-alpha.85",
"@deepkit/type-compiler": "^1.0.1-alpha.83",

my @deepkit/http is at 1.0.1-alpha.85 (i tried newer versions with the similar results).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions