The library is most useful when trying to use your own or private code that was written for Node.js. If you are trying to consume public npm packages, you are likely to get a better result using a .
The standard library provides several “replacement” modules for Node.js built-in modules. These either replicate the functionality of the built-in or they call the Deno native APIs, returning an interface that is compatible with Node.js.
assert
(partly)child_process
(partly)- (partly)
constants
(partly)- (partly)
events
- (partly)
module
- (partly)
process
(partly)timers
- (partly)
url
- (partly)
In addition, there is the
std/node/global.ts
module which provides some of the Node.js globals like global
, process
, and
Buffer
.
If you want documentation for any of the modules, you can simply type deno doc
and the URL of the module in your terminal:
Loading CommonJS modules
That being said, the built-in Node.js module "module"
provides a function
named createRequire()
which allows you to create a Node.js compatible
require()
function which can be used to load CommonJS modules, as well as use
the same resolution logic that Node.js uses when trying to load a module.
createRequire()
will also install the Node.js globals for you.
Example usage would look like this:
import { createRequire } from "https://deno.land/std@$STD_VERSION/node/module.ts";
// import.meta.url will be the location of "this" module (like `__filename` in
// Node.js), and then serve as the root for your "package", where the
// for resolution of packages.
const require = createRequire(import.meta.url);
// Loads the built-in module Deno "replacement":
const path = require("path");
// Loads a CommonJS module (without specifying the extension):
const cjsModule = require("./my_mod");
// Uses Node.js resolution in `node_modules` to load the package/module. The
// package would need to be installed locally via a package management tool
// like npm: