Skip to content

Bug: loader asset plugin initialize_loader raising error #80

@davidw-carta

Description

@davidw-carta

Description

Description

litestar-vite == 0.13.1 introduces a regression.
Running under production mode, say with gunicorn utilizing Jinja templates code such as

    {% if vite %}
      {{ vite("src/test.ts") | safe }}
    {% endif %}

Raises an exception ImproperlyConfiguredException 500 Error

full trace

[2025-04-04 16:06:15 -0700] [26044] [INFO] Application startup complete.
ERROR - 2025-04-04 16:06:16,732 - litestar - config - Uncaught exception (connection_type=http, path=/):
Traceback (most recent call last):
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/middleware/_internal/exceptions/middleware.py", line 158, in __call__
    await self.app(scope, receive, capture_response_started)
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/_asgi/asgi_router.py", line 100, in __call__
    await asgi_app(scope, receive, send)
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 81, in handle
    response = await self._get_response_for_request(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        scope=scope, request=request, route_handler=route_handler, parameter_model=parameter_model
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 133, in _get_response_for_request
    return await self._call_handler_function(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        scope=scope, request=request, parameter_model=parameter_model, route_handler=route_handler
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 157, in _call_handler_function
    response: ASGIApp = await route_handler.to_response(
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        app=scope["litestar_app"], data=response_data, request=request
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/handlers/http_handlers/base.py", line 584, in to_response
    return await response_handler(app=app, data=data, request=request)  # type: ignore[call-arg]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/handlers/http_handlers/_utils.py", line 152, in handler
    return response.to_asgi_response(  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        app=None,
        ^^^^^^^^^
    ...<6 lines>...
        type_encoders=type_encoders,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/response/template.py", line 149, in to_asgi_response
    body = template.render(**context).encode(self.encoding)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/Users/davidw/Dev/work/bug/my_app/app/templates/index.html", line 9, in top-level template code
    {{ vite("src/test.ts") | safe }}
    ^^^^^^^^^^^^^^^^^^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar_vite/loader.py", line 61, in render_asset_tag
    ).asset_loader.render_asset_tag(path, scripts_attrs)
                   ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar_vite/loader.py", line 144, in render_asset_tag
    "".join([self.generate_asset_tags(p, scripts_attrs=scripts_attrs) for p in path]),
             ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar_vite/loader.py", line 271, in generate_asset_tags
    raise ImproperlyConfiguredException(
    ...<3 lines>...
    )
litestar.exceptions.http_exceptions.ImproperlyConfiguredException: 500: Cannot find %s in Vite manifest at %s.  Did you forget to build your assets after an update? ['src/test.ts'] public/manifest.json
ERROR - 2025-04-04 16:23:16,576 - litestar - config - Uncaught exception (connection_type=http, path=/):
Traceback (most recent call last):
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/middleware/_internal/exceptions/middleware.py", line 158, in __call__
    await self.app(scope, receive, capture_response_started)
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/_asgi/asgi_router.py", line 100, in __call__
    await asgi_app(scope, receive, send)
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 81, in handle
    response = await self._get_response_for_request(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        scope=scope, request=request, route_handler=route_handler, parameter_model=parameter_model
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 133, in _get_response_for_request
    return await self._call_handler_function(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        scope=scope, request=request, parameter_model=parameter_model, route_handler=route_handler
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 157, in _call_handler_function
    response: ASGIApp = await route_handler.to_response(
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        app=scope["litestar_app"], data=response_data, request=request
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/handlers/http_handlers/base.py", line 584, in to_response
    return await response_handler(app=app, data=data, request=request)  # type: ignore[call-arg]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/handlers/http_handlers/_utils.py", line 152, in handler
    return response.to_asgi_response(  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        app=None,
        ^^^^^^^^^
    ...<6 lines>...
        type_encoders=type_encoders,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar/response/template.py", line 149, in to_asgi_response
    body = template.render(**context).encode(self.encoding)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/jinja2/environment.py", line 1295, in render
    self.environment.handle_exception()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/jinja2/environment.py", line 942, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "/Users/davidw/Dev/work/bug/my_app/app/templates/index.html", line 9, in top-level template code
    {{ vite("src/test.ts") | safe }}
    ^^^^^^^^^^^^^^^^^^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar_vite/loader.py", line 61, in render_asset_tag
    ).asset_loader.render_asset_tag(path, scripts_attrs)
                   ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar_vite/loader.py", line 144, in render_asset_tag
    "".join([self.generate_asset_tags(p, scripts_attrs=scripts_attrs) for p in path]),
             ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/davidw/Dev/work/bug/.venv/lib/python3.13/site-packages/litestar_vite/loader.py", line 271, in generate_asset_tags
    raise ImproperlyConfiguredException(
    ...<3 lines>...
    )
litestar.exceptions.http_exceptions.ImproperlyConfiguredException: 500: Cannot find %s in Vite manifest at %s.  Did you forget to build your assets after an update? ['src/test.ts'] public/manifest.json

URL to code causing the issue

No response

MCVE

# Your MCVE code here

To recreate the issue see: https://github.com/litestar-org/litestar-vite/pull/79
in the requirements file, update

litestar-vite==0.13.1

Steps to reproduce

see https://github.com/litestar-org/litestar-vite/pull/79

Screenshots

"In the format of: ![SCREENSHOT_DESCRIPTION](SCREENSHOT_LINK.png)"

Logs

Package Version

0.13.1

Platform

  • Linux
  • Mac
  • Windows
  • Other (Please specify in the description above)

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