oakserver / oak

A middleware framework for handling HTTP with Deno, Node, Bun and Cloudflare Workers 🐿️ 🦕

Home Page:https://oakserver.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`deno emit` does not support dynamic imports and npm dependencies so can't be used with oak

garethj2 opened this issue · comments

I've noticed a few things with Oak that prevent it from cleanly being bundled using deno emit.

One is the use of dynamic imports. See line 704 in https://github.com/oakserver/oak/blob/main/application.ts...

if (!NativeRequestCtor) {
  const { NativeRequest } = await import("./http_server_native_request.ts");
  NativeRequestCtor = NativeRequest;
}

Another problem is the use of npm: in https://github.com/oakserver/oak/blob/main/deps.ts. This second issue isn't a problem with Oak per say but rather the lack of support for processing npm: specifiers in Deno's core caching packages that emit uses. I've raised this as a separate issue but have raised this here just to keep everyone aware.

The first issues creates an runtime error when running Deno from a bundle. The second issue prevents the bundle from ever happening in the first place.

oak requires use of dynamic imports in order to support multiple runtimes. Deno Deploy creates a bundle of all code, including dynamic imports, to be able to support deployments. deno emit should also support the same level of functionality, so there is nothing for oak to address.