Macos 安装vue-cli老是遇到Error EACCES permission denied, access ‘ usr local lib node_modules‘怎么办

53 阅读2分钟

nvm_has() { type "$1" > /dev/null 2>&1 }

nvm_echo() { command printf %s\n "$*" 2>/dev/null }

if [ -z "BASHVERSION"][n"{BASH_VERSION}" ] || [ -n "{ZSH_VERSION}" ]; then

shellcheck disable=SC2016

nvm_echo >&2 'Error: the install instructions explicitly say to pipe the install script to bash; please follow them' exit 1 fi

nvm_grep() { GREP_OPTIONS='' command grep "$@" }

nvm_default_install_dir() { [ -z "{XDG_CONFIG_HOME-}" ] && printf %s "{HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm" }

nvm_install_dir() { if [ -n "NVMDIR"];thenprintfNVM_DIR" ]; then printf %s "{NVM_DIR}" else nvm_default_install_dir fi }

nvm_latest_version() { nvm_echo "v0.39.7" }

nvm_profile_is_bash_or_zsh() { local TEST_PROFILE TEST_PROFILE="1"case"{1-}" case "{TEST_PROFILE-}" in *"/.bashrc" | *"/.bash_profile" | *"/.zshrc" | *"/.zprofile") return ;; *) return 1 ;; esac }

Outputs the location to NVM depending on:

* The availability of $NVM_SOURCE

* The presence of $NVM_INSTALL_GITHUB_REPO

* The method used ("script" or "git" in the script, defaults to "git")

NVM_SOURCE always takes precedence unless the method is "script-nvm-exec"

nvm_source() { local NVM_GITHUB_REPO NVM_GITHUB_REPO="NVMINSTALLGITHUBREPO:nvmsh/nvm"if["{NVM_INSTALL_GITHUB_REPO:-nvm-sh/nvm}" if [ "{NVM_GITHUB_REPO}" != 'nvm-sh/nvm' ]; then { nvm_echo >&2 "$(cat)" ; } << EOF @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE REPO IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

The default repository for this install is `nvm-sh/nvm`, but the environment variables `$NVM_INSTALL_GITHUB_REPO` is currently set to `${NVM_GITHUB_REPO}`.

If this is not intentional, interrupt this installation and verify your environment variables. EOF fi local NVM_VERSION NVM_VERSION="{NVM_INSTALL_VERSION:-(nvm_latest_version)}" local NVM_METHOD NVM_METHOD="1"localNVMSOURCEURLNVMSOURCEURL="1" local NVM_SOURCE_URL NVM_SOURCE_URL="NVM_SOURCE" if [ "_NVMMETHOD"="scriptnvmexec"];thenNVMSOURCEURL="https://raw.githubusercontent.com/NVM_METHOD" = "_script-nvm-exec" ]; then NVM_SOURCE_URL="https://raw.githubusercontent.com/{NVM_GITHUB_REPO}/{NVM_VERSION}/nvm-exec" elif [ "_NVM_METHOD" = "_script-nvm-bash-completion" ]; then NVM_SOURCE_URL="raw.githubusercontent.com/${NVM_GITHU…" elif [ -z "NVM_SOURCE_URL" ]; then if [ "_NVM_METHOD" = "script" ]; then NVM_SOURCE_URL="raw.githubusercontent.com/${NVM_GITHU…" elif [ "NVMMETHOD"="git"][z"NVM_METHOD" = "_git" ] || [ -z "NVM_METHOD" ]; then NVM_SOURCE_URL="github.com/${NVM_GITHU…" else nvm_echo >&2 "Unexpected value "NVM_METHOD\" for \NVM_METHOD" return 1 fi fi nvm_echo "$NVM_SOURCE_URL" }

Node.js version to install

nvm_node_version() { nvm_echo "$NODE_VERSION" }

nvm_download() { if nvm_has "curl"; then curl --fail --compressed -q "@" elif nvm_has "wget"; then # Emulate curl with wget ARGS=(nvm_echo "@" | command sed -e 's/--progress-bar /--progress=bar /' \ -e 's/--compressed //' \ -e 's/--fail //' \ -e 's/-L //' \ -e 's/-I /--server-response /' \ -e 's/-s /-q /' \ -e 's/-sS /-nv /' \ -e 's/-o /-O /' \ -e 's/-C - /-c /') # shellcheck disable=SC2086 eval wget ARGS fi }

install_nvm_from_git() { local INSTALL_DIR INSTALL_DIR="(nvminstalldir)"localNVMVERSIONNVMVERSION="(nvm_install_dir)" local NVM_VERSION NVM_VERSION="{NVM_INSTALL_VERSION:-(nvm_latest_version)}" if [ -n "{NVM_INSTALL_VERSION:-}" ]; then # Check if version is an existing ref if command git ls-remote "(nvmsource"git")""(nvm_source "git")" "NVM_VERSION" | nvm_grep -q "NVM_VERSION" ; then : # Check if version is an existing changeset elif ! nvm_download -o /dev/null "(nvm_source "script-nvm-exec")"; then nvm_echo >&2 "Failed to find '$NVM_VERSION' version." exit 1 fi fi

local fetch_error if [ -d "INSTALL_DIR/.git" ]; then # Updating repo nvm_echo "=> nvm is already installed in INSTALL_DIR, trying to update using git" command printf '\r=> ' fetch_error="Failed to update nvm with NVMVERSION,rungitfetchinNVM_VERSION, run 'git fetch' in INSTALL_DIR yourself." else fetch_error="Failed to fetch origin with NVMVERSION.Pleasereportthis!"nvmecho"=>DownloadingnvmfromgittoNVM_VERSION. Please report this!" nvm_echo "=> Downloading nvm from git to 'INSTALL_DIR'" command printf '\r=> ' mkdir -p "INSTALLDIR"if["{INSTALL_DIR}" if [ "(ls -A "{INSTALL_DIR}")" ]; then # Initializing repo command git init "{INSTALL_DIR}" || { nvm_echo >&2 'Failed to initialize nvm repo. Please report this!' exit 2 } command git --git-dir="INSTALLDIR/.git"remoteaddorigin"{INSTALL_DIR}/.git" remote add origin "(nvm_source)" 2> /dev/null
|| command git --git-dir="INSTALLDIR/.git"remoteseturlorigin"{INSTALL_DIR}/.git" remote set-url origin "(nvm_source)" || { nvm_echo >&2 'Failed to add remote "origin" (or set the URL). Please report this!' exit 2 } else # Cloning repo command git clone "(nvmsource)"depth=1"(nvm_source)" --depth=1 "{INSTALL_DIR}" || { nvm_echo >&2 'Failed to clone nvm repo. Please report this!' exit 2 } fi fi

Try to fetch tag

if command git --git-dir="INSTALLDIR"/.gitworktree="INSTALL_DIR"/.git --work-tree="INSTALL_DIR" fetch origin tag "$NVM_VERSION" --depth=1 2>/dev/null; then :

Fetch given version

elif ! command git --git-dir="INSTALLDIR"/.gitworktree="INSTALL_DIR"/.git --work-tree="INSTALL_DIR" fetch origin "NVM_VERSION" --depth=1; then nvm_echo >&2 "fetch_error" exit 1 fi command git -c advice.detachedHead=false --git-dir="INSTALLDIR"/.gitworktree="INSTALL_DIR"/.git --work-tree="INSTALL_DIR" checkout -f --quiet FETCH_HEAD || { nvm_echo >&2 "Failed to checkout the given version NVM_VERSION. Please report this!" exit 2 } if [ -n "(command git --git-dir="INSTALLDIR"/.gitworktree="INSTALL_DIR"/.git --work-tree="INSTALL_DIR" show-ref refs/heads/master)" ]; then if command git --no-pager --git-dir="INSTALLDIR"/.gitworktree="INSTALL_DIR"/.git --work-tree="INSTALL_DIR" branch --quiet 2>/dev/null; then command git --no-pager --git-dir="INSTALLDIR"/.gitworktree="INSTALL_DIR"/.git --work-tree="INSTALL_DIR" branch --quiet -D master >/dev/null 2>&1 else nvm_echo >&2 "Your version of git is out of date. Please update it!" command git --no-pager --git-dir="INSTALLDIR"/.gitworktree="INSTALL_DIR"/.git --work-tree="INSTALL_DIR" branch -D master >/dev/null 2>&1 fi fi

nvm_echo "=> Compressing and cleaning up git repository" if ! command git --git-dir="INSTALLDIR"/.gitworktree="INSTALL_DIR"/.git --work-tree="INSTALL_DIR" reflog expire --expire=now --all; then nvm_echo >&2 "Your version of git is out of date. Please update it!" fi if ! command git --git-dir="INSTALLDIR"/.gitworktree="INSTALL_DIR"/.git --work-tree="INSTALL_DIR" gc --auto --aggressive --prune=now ; then nvm_echo >&2 "Your version of git is out of date. Please update it!" fi return }

Automatically install Node.js

nvm_install_node() { local NODE_VERSION_LOCAL NODE_VERSION_LOCAL="$(nvm_node_version)"

if [ -z "$NODE_VERSION_LOCAL" ]; then return 0 fi

nvm_echo "=> Installing Node.js version NODEVERSIONLOCAL"nvminstall"NODE_VERSION_LOCAL" nvm install "NODE_VERSION_LOCAL" local CURRENT_NVM_NODE

CURRENT_NVM_NODE="(nvmversioncurrent)"if["(nvm_version current)" if [ "(nvm_version "NODEVERSIONLOCAL")"=="NODE_VERSION_LOCAL")" == "CURRENT_NVM_NODE" ]; then nvm_echo "=> Node.js version NODE_VERSION_LOCAL has been successfully installed" else nvm_echo >&2 "Failed to install Node.js NODE_VERSION_LOCAL" fi }

install_nvm_as_script() { local INSTALL_DIR INSTALL_DIR="(nvminstalldir)"localNVMSOURCELOCALNVMSOURCELOCAL="(nvm_install_dir)" local NVM_SOURCE_LOCAL NVM_SOURCE_LOCAL="(nvm_source script)" local NVM_EXEC_SOURCE NVM_EXEC_SOURCE="(nvmsourcescriptnvmexec)"localNVMBASHCOMPLETIONSOURCENVMBASHCOMPLETIONSOURCE="(nvm_source script-nvm-exec)" local NVM_BASH_COMPLETION_SOURCE NVM_BASH_COMPLETION_SOURCE="(nvm_source script-nvm-bash-completion)"

Downloading to $INSTALL_DIR

mkdir -p "INSTALLDIR"if[f"INSTALL_DIR" if [ -f "INSTALL_DIR/nvm.sh" ]; then nvm_echo "=> nvm is already installed in INSTALLDIR,tryingtoupdatethescript"elsenvmecho"=>DownloadingnvmasscripttoINSTALL_DIR, trying to update the script" else nvm_echo "=> Downloading nvm as script to 'INSTALL_DIR'" fi nvm_download -s "NVMSOURCELOCAL"o"NVM_SOURCE_LOCAL" -o "INSTALL_DIR/nvm.sh" || { nvm_echo >&2 "Failed to download 'NVM_SOURCE_LOCAL'" return 1 } & nvm_download -s "NVM_EXEC_SOURCE" -o "INSTALL_DIR/nvm-exec" || { nvm_echo >&2 "Failed to download 'NVM_EXEC_SOURCE'" return 2 } & nvm_download -s "NVMBASHCOMPLETIONSOURCE"o"NVM_BASH_COMPLETION_SOURCE" -o "INSTALL_DIR/bash_completion" || { nvm_echo >&2 "Failed to download 'NVM_BASH_COMPLETION_SOURCE'" return 2 } & for job in (jobs -p | command sort) do wait "job"returnjob" || return ? done chmod a+x "INSTALL_DIR/nvm-exec" || { nvm_echo >&2 "Failed to mark 'INSTALL_DIR/nvm-exec' as executable" return 3 } }

nvm_try_profile() { if [ -z "1"][!f"{1-}" ] || [ ! -f "{1}" ]; then return 1 fi nvm_echo "${1}" }

Detect profile file if not specified as environment variable

(eg: PROFILE=~/.myprofile)

The echo'ed path is guaranteed to be an existing file

Otherwise, an empty string is returned

nvm_detect_profile() { if [ "${PROFILE-}" = '/dev/null' ]; then # the user has specifically requested NOT to have nvm touch their profile return fi

if [ -n "{PROFILE}" ] && [ -f "{PROFILE}" ]; then nvm_echo "${PROFILE}" return fi

local DETECTED_PROFILE DETECTED_PROFILE=''

if [ "{SHELL#*bash}" != "SHELL" ]; then if [ -f "HOME/.bashrc"];thenDETECTEDPROFILE="HOME/.bashrc" ]; then DETECTED_PROFILE="HOME/.bashrc" elif [ -f "HOME/.bashprofile"];thenDETECTEDPROFILE="HOME/.bash_profile" ]; then DETECTED_PROFILE="HOME/.bash_profile" fi elif [ "{SHELL#*zsh}" != "SHELL" ]; then if [ -f "HOME/.zshrc"];thenDETECTEDPROFILE="HOME/.zshrc" ]; then DETECTED_PROFILE="HOME/.zshrc" elif [ -f "HOME/.zprofile"];thenDETECTEDPROFILE="HOME/.zprofile" ]; then DETECTED_PROFILE="HOME/.zprofile" fi fi

if [ -z "DETECTEDPROFILE"];thenforEACHPROFILEin".profile"".bashrc"".bashprofile"".zprofile"".zshrc"doifDETECTEDPROFILE="DETECTED_PROFILE" ]; then for EACH_PROFILE in ".profile" ".bashrc" ".bash_profile" ".zprofile" ".zshrc" do if DETECTED_PROFILE="(nvm_try_profile "HOME/{HOME}/{EACH_PROFILE}")"; then break fi done fi

if [ -n "DETECTEDPROFILE"];thennvmecho"DETECTED_PROFILE" ]; then nvm_echo "DETECTED_PROFILE" fi }

Check whether the user has any globally-installed npm modules in their system

Node, and warn them if so.

nvm_check_global_modules() { local NPM_COMMAND NPM_COMMAND="(commandvnpm2>/dev/null)"return0[n"(command -v npm 2>/dev/null)" || return 0 [ -n "{NVM_DIR}" ] && [ -z "{NPM_COMMAND%%"NVM_DIR"/*}" ] && return 0

local NPM_VERSION NPM_VERSION="(npmversion)"NPMVERSION="(npm --version)" NPM_VERSION="{NPM_VERSION:--1}" [ "${NPM_VERSION%%[!-0-9]*}" -gt 0 ] || return 0

local NPM_GLOBAL_MODULES NPM_GLOBAL_MODULES="(npmlistgdepth=0commandsede/npm@/de/(empty)( npm list -g --depth=0 | command sed -e '/ npm@/d' -e '/ (empty)/d' )"

local MODULE_COUNT MODULE_COUNT="(commandprintf( command printf %s\\n "NPM_GLOBAL_MODULES" | command sed -ne '1!p' | # Remove the first line wc -l | command tr -d ' ' # Count entries )"

if [ "{MODULE_COUNT}" != '0' ]; then # shellcheck disable=SC2016 nvm_echo '=> You currently have modules installed globally with `npm`. These will no' # shellcheck disable=SC2016 nvm_echo '=> longer be linked to the active version of Node when you install a new node' # shellcheck disable=SC2016 nvm_echo '=> with `nvm`; and they may (depending on how you construct your `PATH)' # shellcheck disable=SC2016 nvm_echo '=> override the binaries of modules installed with nvm`:' nvm_echo

command printf %s\\n "$NPM_GLOBAL_MODULES"
nvm_echo '=> If you wish to uninstall them at a later point (or re-install them under your'
# shellcheck disable=SC2016
nvm_echo '=> `nvm` Nodes), you can remove them from the system Node as follows:'
nvm_echo
nvm_echo '     $ nvm use system'
nvm_echo '     $ npm uninstall -g a_module'
nvm_echo

fi }

nvm_do_install() { if [ -n "{NVM_DIR-}" ] && ! [ -d "{NVM_DIR}" ]; then if [ -e "{NVM_DIR}" ]; then nvm_echo >&2 "File \"{NVM_DIR}" has the same name as installation directory." exit 1 fi

if [ "${NVM_DIR}" = "$(nvm_default_install_dir)" ]; then
  mkdir "${NVM_DIR}"
else
  nvm_echo >&2 "You have \$NVM_DIR set to \"${NVM_DIR}\", but that directory does not exist. Check your profile files and environment."
  exit 1
fi

fi

Disable the optional which check, www.shellcheck.net/wiki/SC2230

shellcheck disable=SC2230

if nvm_has xcode-select && [ "(xcodeselectp>/dev/null2>/dev/null;echo(xcode-select -p >/dev/null 2>/dev/null ; echo ?)" = '2' ] && [ "(which git)" = '/usr/bin/git' ] && [ "(which curl)" = '/usr/bin/curl' ]; then nvm_echo >&2 'You may be on a Mac, and need to install the Xcode Command Line Developer Tools.' # shellcheck disable=SC2016 nvm_echo >&2 'If so, run xcode-select --install and try again. If not, please report this!' exit 1 fi if [ -z "{METHOD}" ]; then # Autodetect install method if nvm_has git; then install_nvm_from_git elif nvm_has curl || nvm_has wget; then install_nvm_as_script else nvm_echo >&2 'You need git, curl, or wget to install nvm' exit 1 fi elif [ "{METHOD}" = 'git' ]; then if ! nvm_has git; then nvm_echo >&2 "You need git to install nvm" exit 1

最后

❤️ 谢谢支持,喜欢的话别忘了 关注、点赞哦。

前端校招面试题精编解析大全 开源分享:docs.qq.com/doc/DSmRnRG…