简体   繁体   中英

npm global install commands not found on zsh

I just installed the package live-server using npm install -g live server

I checked and the package is currently installed at

/Users/username/.npm-global/lib/node_modules/live-server/live-server.js

However, when I try to run live-server from the command line I get the error

zsh: command not found: live-server

What do I need to do to be able to run live-server? I have oh-my-zsh installed and I'm worried that may be causing my issue. I understand it should have something to do with setting my PATH but I'm not sure what.

Running echo $PATH results in:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/opt/ImageMagick/bin:/Users/username/npm-global/bin:/Users/username/npm-global/bin:/Users/username/npm-global/lib

Here are some files in my root directory that may be relevant.

Thank you

.zshrc

# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH

# Path to your oh-my-zsh installation.
export ZSH=/Users/username/.oh-my-zsh

# Set name of the theme to load. Optionally, if you set this to "random"
# it'll load a random theme each time that oh-my-zsh is loaded.
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="robbyrussell"

# Set list of themes to load
# Setting this variable when ZSH_THEME=random
# cause zsh load theme from this variable instead of
# looking in ~/.oh-my-zsh/themes/
# An empty array have no effect
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )

# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"

# Uncomment the following line to use hyphen-insensitive completion. Case
# sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"

# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"

# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13

# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"

# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"

# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"

# Uncomment the following line to display red dots whilst waiting for completion.
# COMPLETION_WAITING_DOTS="true"

# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"

# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# HIST_STAMPS="mm/dd/yyyy"

# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
  git
)

source $ZSH/oh-my-zsh.sh

# User configuration

# export MANPATH="/usr/local/man:$MANPATH"

# You may need to manually set your language environment
# export LANG=en_US.UTF-8

# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
#   export EDITOR='vim'
# else
#   export EDITOR='mvim'
# fi

# Compilation flags
# export ARCHFLAGS="-arch x86_64"

# ssh
# export SSH_KEY_PATH="~/.ssh/rsa_id"

# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
export PATH=$PATH:/Users/username/npm-global/bin
export PATH=$PATH:/Users/username/npm-global/lib

export PATH=$PATH:/Users/username/.npm-global/bin到 .zshrc 而不是 .bashrc 解决了我的问题

将此添加到我的 ~/.zshrc 为我修复了它

export PATH="$HOME/.npm-packages/bin:$PATH"

Set it up this way to prevent further issues:

Install NVM to manage Node versions Install node with --lts so get the latest version Install NPM again latest version

After that set up the .zshrc file properly. Do not use the .bashrc if you use zshell, it has it's own config file, I think you already updated it.

Check the NPM page https://www.npmjs.com/package/live-server especially these parts:

Default options:
If a file ~/.live-server.json exists it will be loaded and used as default options for live-server on the command line. See "Usage from node" for option names.

Usage from node
var liveServer = require("live-server");
var params = ...

I forgot that I was using nvm (Node version manager), but I found it out by typing:

where npm

Which gave me the path to my current npm installation.

/Users/myusername/.nvm/versions/node/v16.13.0/bin/npm

This meant that my globally installed packages are inside /Users/myusername/.nvm/versions/node/v16.13.0/lib/node_modules !

So, I did this in my zshconfig:

export PATH="$PATH":"$HOME/.nvm/versions/node/v16.13.0/lib/node_modules"

and after restarting the terminal, my globally installed packages started working! 🚀

Note: if you change your active node version (via nvm use ... ), it will probably mess up your globally installed packages. But you can always update the path after changing the node version (if it's a long-term change).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM