Amazon Web Services Feed
What is Deno?

Deno 1.0, a runtime for JavaScript and TypeScript, rolled out in May with appealing features for JavaScript developers, including:

  • Secure defaults: Explicit permission must be granted for your Deno applications in order to access disk, network, and runtime environments.
  • Native TypeScript support: No tsconfig needed—Deno acts like a native TypeScript runtime. Under the hood Deno still transpiles and bundles TypeScript files.
  • Ability to import ES Modules directly from URLs: No more NPM—dependencies can be imported directly via URL or file path:
import toUpperCase from '';

Deno’s approach to ES Modules is generating a lot of debate around package management, especially concerning security. For example, will this prevent another left-pad incident? Regardless of your gut reaction, I highly recommend reading the docs.

I think the explicitness of import-from-URL will make developers think carefully about dependency management; however, I suspect many teams will handle this problem similarly to how they handle npm: with lock files, proxies, and white-listed internal registries.

Deno also includes less-cited features that I’m excited about:

Enough talk, let’s take Deno for a spin by building a simple web app:

import { serve } from ""; const s = serve({ port: 8000 });
for await (const req of s) { if (req.url.startsWith("/ping")) { req.respond({ status: 200, body: "pong" }); } else if (req.url.startsWith("/hi")) { req.respond({ status: 200, body: "hello there." }); } else { req.respond({ status: 404, body: "Not Found." }); }

This demo uses the HTTP standard library and handles two routes: /ping and /hi. Note the use of for await … of without an enclosing async IIFE. Install Deno, then run:

# run locally
deno run demo.ts # run from remote URL
deno run

Either way, you should see an error:

error: Uncaught PermissionDenied: network access to "", run again with the --allow-net flag at unwrapResponse ($deno$/ops/dispatch_json.ts:43:11) at Object.sendSync ($deno$/ops/dispatch_json.ts:72:10) at Object.listen ($deno$/ops/net.ts:51:10) at listen ($deno$/net.ts:152:22) at serve ( at

Since this is an HTTP server, we need to grant explicit permissions for network access:

# run locally
deno run --allow-net demo.ts # run from remote URL
deno run --allow-net

Now you should be able to test your server by navigating to http://localhost:8000/hi. So far so good, but that URL is quite long: Is there an easy way to install it as a script?

deno install --allow-net -n denohttp # run the script:

I hope this post has given you an overview of Deno.

Deno is released under the MIT License. Learn more in the Deno GitHub repository or visit the Deno website.