A compatibility gap in Deno happens when some Node.js features or modules don't work directly because Deno uses different APIs and security models.
Click to reveal answer
beginner
How does Deno handle Node.js built-in modules like 'fs' or 'path'?
Deno does not support Node.js built-in modules natively. Instead, it provides its own standard library modules with similar functionality but different APIs.
Click to reveal answer
intermediate
What is a common workaround to use Node.js modules in Deno?
A common workaround is to use compatibility layers like the 'std/node' module in Deno, which mimics Node.js APIs, or to use third-party modules adapted for Deno.
Click to reveal answer
beginner
Why does Deno require explicit permissions for file and network access?
Deno uses a secure-by-default model, so it asks for explicit permissions to access files, network, or environment variables to protect users from unwanted access.
Click to reveal answer
intermediate
How can you run a Node.js script in Deno despite compatibility gaps?
You can run Node.js scripts in Deno by using the '--compat' flag and the 'node:' prefix for imports, which provides access to Node.js built-in modules, allowing many Node.js APIs to work in Deno.
Click to reveal answer
Which Deno feature helps run Node.js code with fewer changes?
AThe 'deno bundle' command
BThe 'node:' prefix
CThe 'deno fmt' command
DThe 'deno lint' command
✗ Incorrect
The 'node:' prefix enables Node.js compatibility for built-in modules in Deno, helping run Node.js code with fewer changes.
What does Deno require before accessing the file system?
AA special import statement
BNo special requirement
CA configuration file
DExplicit permission via flags
✗ Incorrect
Deno requires explicit permission flags like '--allow-read' to access the file system for security reasons.
How does Deno provide Node.js-like modules such as 'fs' or 'path'?
ABy using the same Node.js modules directly
BBy installing Node.js separately
CBy importing from 'std/node' compatibility layer
DBy using browser APIs
✗ Incorrect
Deno offers a 'std/node' module that mimics Node.js built-in modules to help with compatibility.
What is a compatibility gap?
AA difference causing code not to run the same way in Deno
BA syntax error
CA security vulnerability
DA missing feature in Node.js
✗ Incorrect
A compatibility gap is a difference between environments that causes code to behave differently or not run.
Which is NOT a typical workaround for compatibility gaps in Deno?
ARunning Node.js code without any changes
BUsing compatibility layers like 'std/node'
CRunning code with '--compat' flag
DUsing Deno's standard library
✗ Incorrect
Running Node.js code without any changes usually fails due to compatibility gaps; workarounds are needed.
Explain what compatibility gaps are in Deno and how you can work around them.
Think about why some Node.js code doesn't run in Deno and what Deno offers to fix that.
You got /5 concepts.
Describe how Deno's security model affects compatibility and what you must do to run code needing file or network access.
Consider how Deno protects users and how that changes running scripts compared to Node.js.
You got /4 concepts.
Practice
(1/5)
1. Which statement best describes how Deno handles module imports compared to Node.js?
easy
A. Deno uses URL-based ES module imports instead of Node.js package imports.
B. Deno uses CommonJS require() for all modules like Node.js.
C. Deno imports modules only from local files, not URLs.
D. Deno automatically converts Node.js packages to ES modules.
Solution
Step 1: Understand Deno's import style
Deno uses ES modules imported via URLs or local paths, unlike Node.js which uses package names with require().
Step 2: Compare with Node.js imports
Node.js uses CommonJS require() or ES modules with package names resolved from node_modules, which Deno does not support by default.
Final Answer:
Deno uses URL-based ES module imports instead of Node.js package imports. -> Option A
Quick Check:
Import style difference = A [OK]
Hint: Remember: Deno imports from URLs, Node.js from packages [OK]
Common Mistakes:
Thinking Deno supports require() like Node.js
Assuming Deno imports only local files
Believing Deno auto-converts Node packages
2. Which of the following is the correct way to import the "path" module in Deno?
easy
A. import path from "path";
B. const path = require("path");
C. import * as path from "https://deno.land/std/path/mod.ts";
D. import { path } from "node:path";
Solution
Step 1: Identify Deno's standard library import method
Deno imports standard modules via URLs from its official repository, e.g., https://deno.land/std/path/mod.ts.
Step 2: Check each option
import path from "path"; uses Node.js style import without URL, invalid in Deno. const path = require("path"); uses require(), not supported in Deno. import { path } from "node:path"; uses Node.js built-in module specifier, not valid in Deno.
Final Answer:
import * as path from "https://deno.land/std/path/mod.ts"; -> Option C
Quick Check:
Standard library import = D [OK]
Hint: Deno imports std modules via full URLs [OK]
Common Mistakes:
Using require() instead of import
Omitting the full URL for std modules
Trying to import Node.js built-ins directly
3. What will be the output of this Deno code snippet?
import { readFileStr } from "https://deno.land/std/fs/mod.ts";
const data = await readFileStr("./example.txt");
console.log(data);
Assuming "example.txt" contains the text "Hello Deno!".
medium
A. undefined
B. "Hello Deno!"
C. SyntaxError due to await outside async
D. Error: Module not found
Solution
Step 1: Understand the code behavior
The code imports readFileStr from Deno's standard fs module and reads the file content asynchronously.
Step 2: Check for syntax and runtime correctness
The code uses top-level await, which Deno supports. The file exists with content "Hello Deno!" so readFileStr returns that string.
Final Answer:
"Hello Deno!" -> Option B
Quick Check:
File read content = A [OK]
Hint: Deno supports top-level await for async calls [OK]
Common Mistakes:
Assuming await needs async function wrapper
Confusing readFileStr with returning undefined
Thinking module URL is invalid
4. You try to use the Node.js "crypto" module in Deno with import crypto from "crypto"; but get an error. What is the best way to fix this?
medium
A. Install Node.js crypto package via npm and import it.
B. Add a --allow-node-compat flag to Deno run command.
C. Change import to import * as crypto from "crypto";.
D. Use Deno's built-in Web Crypto API instead of Node.js crypto.
Solution
Step 1: Identify compatibility issue
Deno does not support Node.js built-in modules like "crypto" directly, so importing "crypto" fails.
Step 2: Use Deno's alternative
Deno provides the Web Crypto API natively, which covers most cryptographic needs securely and without extra packages.
Final Answer:
Use Deno's built-in Web Crypto API instead of Node.js crypto. -> Option D
Quick Check:
Use Web Crypto API = B [OK]
Hint: Use Deno's Web Crypto, not Node.js crypto module [OK]
Common Mistakes:
Trying to import Node.js crypto directly
Assuming npm packages work without compatibility layer
Using wrong import syntax for Node.js modules
5. You want to use a popular Node.js library that depends on "fs" and "path" modules in your Deno project. Which approach best handles this compatibility gap?
hard
A. Use a compatibility layer like "deno_std/node" to shim Node.js modules.
B. Rewrite the library code to remove all Node.js dependencies.
C. Run the Node.js library in a separate Node.js process and communicate via IPC.
D. Import the Node.js modules directly using Deno's native support.
Solution
Step 1: Understand the problem
Node.js libraries often rely on built-in modules like "fs" and "path" which Deno does not support natively.
Step 2: Identify Deno's workaround
Deno provides a compatibility layer "deno_std/node" that shims many Node.js modules to allow such libraries to run with minimal changes.
Final Answer:
Use a compatibility layer like "deno_std/node" to shim Node.js modules. -> Option A
Quick Check:
Use compatibility shim = C [OK]
Hint: Use deno_std/node for Node.js module compatibility [OK]
Common Mistakes:
Trying to import Node.js modules directly
Assuming full rewrite is always needed
Ignoring IPC as a complex alternative
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.