Deno is a modern runtime for JavaScript and TypeScript. When using it in real projects, you need to plan your code structure carefully to keep your app safe, fast, and easy to fix.
Why production Deno needs careful architecture
No special syntax, but good architecture means organizing your code into clear modules, using permissions wisely, and handling errors properly.Deno uses strict permissions to access files, network, and environment variables. Planning helps avoid permission errors.
Modular code makes it easier to test and maintain your app.
// Example of modular code in Deno // file: server.ts import { serve } from "https://deno.land/std@0.177.0/http/server.ts"; serve((req) => new Response("Hello from Deno!"));
// Using permissions carefully // Run with: deno run --allow-net server.ts import { serve } from "https://deno.land/std@0.177.0/http/server.ts"; serve(() => new Response("Safe server"));
This program shows a basic Deno server that only accepts GET requests. It logs when it starts and catches errors to avoid crashes.
// server.ts import { serve } from "https://deno.land/std@0.177.0/http/server.ts"; // Simple web server with error handling try { console.log("Server running on http://localhost:8000"); serve((req) => { if (req.method !== "GET") { return new Response("Method not allowed", { status: 405 }); } return new Response("Hello, Deno user!", { status: 200 }); }); } catch (error) { console.error("Server error:", error); }
Always run Deno programs with only the permissions they need, like --allow-net for network access.
Use try/catch blocks to handle unexpected errors and keep your app running smoothly.
Organize your code into small files or modules to keep it clean and easy to update.
Deno requires careful planning to use permissions safely and avoid errors.
Modular code helps keep your project organized and maintainable.
Handling errors properly makes your app more reliable in production.
Practice
Solution
Step 1: Understand Deno's default security model
Deno runs scripts with no permissions by default to protect your system.Step 2: Recognize the need for explicit permission granting in production
In production, you must carefully grant only needed permissions to avoid security risks.Final Answer:
Because Deno restricts access to files, network, and environment by default for security. -> Option AQuick Check:
Default security = careful permission planning [OK]
- Assuming Deno grants all permissions automatically
- Ignoring permissions in production
- Thinking permissions only matter during development
Solution
Step 1: Recall Deno's permission flags syntax
Deno uses flags like --allow-net to grant network access.Step 2: Identify the correct flag from options
Only --allow-net matches Deno's official permission flag syntax.Final Answer:
deno run --allow-net script.ts -> Option DQuick Check:
Correct flag syntax = --allow-net [OK]
- Using incorrect flag names like --net-allow
- Combining words without dashes
- Assuming permission flags are optional
try {
const data = await Deno.readTextFile('config.json');
console.log('Config loaded:', data);
} catch (error) {
console.error('Failed to load config:', error.message);
}What will happen if the file
config.json does not exist and the script is run with deno run --allow-read script.ts?Solution
Step 1: Understand try-catch behavior in async file reading
If the file is missing, Deno.readTextFile throws an error caught by catch.Step 2: Analyze the catch block's effect
The catch block logs 'Failed to load config:' plus the error message.Final Answer:
The catch block will run and print an error message. -> Option AQuick Check:
Missing file triggers catch block [OK]
- Expecting the script to crash without catch
- Assuming empty string is returned for missing file
- Thinking error is ignored silently
const data = await Deno.readTextFile('data.txt');
console.log(data);When running
deno run script.ts without any flags, what error will you get?Solution
Step 1: Recall Deno's default permission restrictions
Deno denies file read access unless --allow-read is given.Step 2: Identify the error from missing permission
Running without --allow-read causes a PermissionDenied error.Final Answer:
PermissionDenied: read access to "data.txt" is not allowed -> Option BQuick Check:
Missing --allow-read causes PermissionDenied [OK]
- Expecting syntax or reference errors
- Assuming script runs without permissions
- Confusing permission errors with runtime errors
Solution
Step 1: Consider security by limiting permissions
Grant only the permissions each module needs to reduce risk.Step 2: Organize code modularly and handle errors
Modular code improves maintainability; error handling improves reliability.Final Answer:
Use modular code, grant only needed permissions per module, and handle errors properly. -> Option CQuick Check:
Modular + limited permissions + error handling = best practice [OK]
- Granting all permissions globally
- Ignoring error handling
- Putting all code in one file
Ready to prove it?
Pass the test and this pattern moves unknown
