# The Node.js Guide

> Node.js runs JavaScript on the server. A curated guide to the best Node.js tutorials on this site: core modules, files, HTTP, streams, and npm.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2018-03-22 | Updated: 2026-07-14 | Topics: [Node.js](https://flaviocopes.com/tags/node/) | Canonical: https://flaviocopes.com/nodejs/

Node.js is a runtime that lets you run JavaScript outside the browser. Built on the V8 engine, it powers servers, command line tools, and build systems everywhere.

If you know JavaScript, you already know most of what you need. What changes is the environment: no DOM, but full access to files, the network, and the operating system.

I wrote a lot of Node.js tutorials on this site. This page is your map. Follow the path below if you're starting out, or jump to the topic you need.

## Where to start

Follow this path in order:

1. [How to install Node.js](https://flaviocopes.com/node-installation/): get Node running on your machine
2. [Differences between Node and the browser](https://flaviocopes.com/node-difference-browser/): same language, different world
3. [How much JavaScript do you need to know to use Node?](https://flaviocopes.com/node-javascript-language/): check your prerequisites
4. [How to use the Node.js REPL](https://flaviocopes.com/node-repl/): experiment with Node interactively
5. [Output to the command line using Node](https://flaviocopes.com/node-output-to-cli/): your first tool, `console.log()`
6. [Node, accept arguments from the command line](https://flaviocopes.com/node-cli-args/): make your scripts configurable
7. [Build an HTTP server](https://flaviocopes.com/node-http-server/): the classic first Node program

## Core concepts

These are the ideas that make Node what it is. The event loop is the big one: understand it and everything else follows.

- [The Node.js event loop](https://flaviocopes.com/node-event-loop/)
- [Understanding process.nextTick()](https://flaviocopes.com/node-process-nexttick/)
- [Understanding setImmediate()](https://flaviocopes.com/node-setimmediate/)
- [The Node event emitter](https://flaviocopes.com/node-event-emitter/)
- [Node buffers](https://flaviocopes.com/node-buffers/)
- [Node.js streams](https://flaviocopes.com/nodejs-streams/)
- [Error handling in Node.js](https://flaviocopes.com/node-exceptions/)

## Working with files

Reading and writing files is the bread and butter of Node scripts.

- [Reading files with Node](https://flaviocopes.com/node-reading-files/)
- [Writing files with Node](https://flaviocopes.com/node-writing-files/)
- [The Node fs module](https://flaviocopes.com/node-module-fs/)
- [How to use the fs module with async/await](https://flaviocopes.com/node-fs-await/)
- [Working with folders in Node](https://flaviocopes.com/node-folders/)
- [Node file paths](https://flaviocopes.com/node-file-paths/)

## HTTP and networking

Node was born to build network programs. These posts cover both serving and making requests.

- [Making HTTP requests with Node](https://flaviocopes.com/node-make-http-requests/)
- [Make an HTTP POST request using Node](https://flaviocopes.com/node-http-post/)
- [Get HTTP request body data using Node](https://flaviocopes.com/node-request-data/)
- [The Node http module](https://flaviocopes.com/node-module-http/)
- [HTTP requests in Node using Axios](https://flaviocopes.com/node-axios/)
- [Using WebSockets with Node.js](https://flaviocopes.com/node-websockets/)

## npm and the ecosystem

Every Node project lives on npm. Learn the package manager and the files that drive it.

- [An introduction to the npm package manager](https://flaviocopes.com/npm/)
- [The package.json guide](https://flaviocopes.com/package-json/)
- [The package-lock.json file](https://flaviocopes.com/package-lock-json/)
- [npm global or local packages](https://flaviocopes.com/npm-packages-local-global/)
- [npm dependencies and devDependencies](https://flaviocopes.com/npm-dependencies-devdependencies/)
- [Semantic versioning using npm](https://flaviocopes.com/npm-semantic-versioning/)
- [The npx Node package runner](https://flaviocopes.com/npx/)

## Go deeper

I collected all of this material in the free [Node.js Handbook](https://flaviocopes.com/ebooks/node-handbook/). It's the organized, start-to-finish version of everything above.

Every post on the topic is listed under [the node tag](https://flaviocopes.com/tags/node/).
