Borislav Hadzhiev
Thu Mar 17 2022·3 min read
Photo by Timur M
Use npx
to solve the error "http-server: command not found", e.g.
npx http-server .
or install the package globally by running
npm install -g http-server
to be able to use the command without the npx
prefix.
The fastest way to solve the error is to use the npx
command.
npx http-server . npx http-server --version
Alternatively, you can install http-server globally or as a development dependency.
# 👇️ installs http-server globally (can run from any directory) npm install -g http-server # 👇️ installs http-server locally to the project (must be ran from root directory) npm install --save-dev http-server
The benefit of installing http-server
as a development dependency is that you
can control the version of the package in your package.json
file.
You can also create a script that starts your server in the scripts
object of
your package.json
file.
{ "scripts": { "start": "http-server ." } }
Now you would run the command as npm start
and not use http-server
directly.
http-server
fails, you might have to run the command prefixed with sudo
.# 👇️ if you get permissions error sudo npm install -g http-server http-server --version
You can link your project to the globally installed http-server
package, by
opening your terminal in your project's root directory (where your
package.json
file is) and running the npm link http-server
command.
npm link http-server
The npm link command creates
a symbolic link from the globally installed package to the node_modules/
directory of the current folder.
If that doesn't help, run the following command:
npm config get prefix
The command will show you the path where npm
puts your globally installed
packages. The global packages will be in the bin
directory at the specified
path.
Look at the PATH environment variable on your operating system and add the
path that the npm config get prefix
command outputs, if it's not already
there.
If that didn't work, try to add the path to the bin
folder (from
npm config get prefix
) to your PATH environment variable and restart your
terminal.
For example, on macOS, you can update your path with the following command:
# make sure path matches with npm config get prefix export PATH=/usr/local/share/npm/bin:$PATH
And on Windows, the output of the npm config get prefix
command will look
something like: C:\Users\Your_User_Name\AppData\Roaming\npm
.
Edit the environment variable on your machine and add the specified path (replacing the placeholder with your username).
If you are on linux, you can add the output from the npm config get prefix
command to your .bashrc
file.
# 👇️ make sure to update the path with the output # from the command export PATH="/usr/local/share/npm/bin:$PATH"
If that doesn't help try to reinstall Node.js on your machine and then install
http-server
globally by running npm install -g http-server@latest
.
# 👇️ installs http-server globally (can run from any directory) npm install -g http-server # 👇️ installs http-server locally to the project (must be ran from root directory) npm install --save-dev http-server
http-server
fails, you might have to run the command prefixed with sudo
.# 👇️ if you get permissions error sudo npm install -g http-server http-server --version
Alternatively, you can see how you can fix the permissions error on this page in the official npm docs.