Skip to content

[BUG] Erros de Compilação do Framework #153

Open

Description

@KlayRodrigs

🐛 Bug Report

📄 Título

Erros de Compilação do Framework no Vaden 1.0.2

🖥️ Environment

  • macOS Tahoe 26.0

📝 Descrição

Ocorre um erro ao usar um endpoint Post com Body em um controller com anotation @controller. Ao rodar runner e tentar rodar o server, ocorre um erro.

🔄 Passos para reproduzir o erro

import 'package:oxe_bus_api/src/services/route_bus_stops_service.dart';
import 'package:vaden/vaden.dart';

@Api(tag: 'Route Bus Stops', description: 'Routes with their complete stops information')
@Controller('/api/route-stops')
class RouteBusStopsController {
  final RouteBusStopsService service;

  RouteBusStopsController({required this.service});

  @Post('/route')
  Future<int> returnInt(@Body() int request) async {
    return await service.returnIntService(routeId: request);
  }
}
import 'package:vaden/vaden.dart';

@Service()
class RouteBusStopsService {
  Future<int> returnIntService({required int routeId}) async {
    return 1;
  }
}

dart run build_runner build
  1. Tento rodar:
bin/server.dart
  1. Error

vaden_application.dart:178
      final bodyString = await request.readAsString();
                               ^^^^^^^
lib/vaden_application.dart:180:13: Context: This is the declaration of the variable 'request'.
vaden_application.dart:180
      final request = _injector.get<DSON>().fromJson<int>(bodyJson) as dynamic;
            ^^^^^^^
lib/vaden_application.dart:190:35: Error: The method 'validate' isn't defined for the type 'Request'.
vaden_application.dart:190
 - 'Request' is from 'package:shelf/src/request.dart' ('../../.pub-cache/hosted/pub.dev/shelf-1.4.2/lib/src/request.dart').
Try correcting the name to the name of an existing method, or defining a method named 'validate'.
        final validator = request.validate(ValidatorBuilder<int>());
                                  ^^^^^^^^
lib/vaden_application.dart:201:43: Error: The argument type 'Request' can't be assigned to the parameter type 'int'.
vaden_application.dart:201
 - 'Request' is from 'package:shelf/src/request.dart' ('../../.pub-cache/hosted/pub.dev/shelf-1.4.2/lib/src/request.dart').
      final result = await ctrl.returnInt(request);
                                          ^
Exited (254).

Pubspec:

name: oxe_bus_api
description: api bus.
version: 1.0.0
# repository: https://github.com/my_org/my_repo

environment:
  sdk: '>=3.10.0 <4.0.0'

dependencies:
  postgres: ^3.5.8
  dio: ^5.9.0
  vaden: ^1.0.2
  logging: ^1.2.0

dev_dependencies:
  build_runner: ^2.10.3
  vaden_class_scanner: ^1.0.2

⚠️ Severity

  • Low
  • Medium
  • High
  • Critical

🚨 Priority

  • P1 (High)
  • P2 (Medium)
  • P3 (Low)

Activity

  1. KlayRodrigs commented on Mar 9, 2026

    @KlayRodrigs
    Author

    Identifiquei algo curioso testando mais a fundo, o problema não é o uso de anotations combinadas, mas sim um detalhe sutil:

    Controller que quebra o gen:

    @Patch('/<routeId>/update')
      Future<RouteBusStopsDto> updateRouteById(@Param() int routeId, @Body() UpdateRouteDto request) async {
        return await service.updateRouteById(routeId: routeId, updateRouteDto: request);
      }
    

    Controller que NÃO quebra o gen:

      @Patch('/<routeId>/update')
      Future<RouteBusStopsDto> updateRouteById(@Param() int routeId, @Body() UpdateRouteDto updateRouteDto) async {
        return await service.updateRouteById(routeId: routeId, updateRouteDto: updateRouteDto);
      }
    

    Simplesmente o nome do parâmetro ser "request" faz o gen quebrar. Isso só ocorre com o controller com a anotation @controller.

    Abraços

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions