Cài đặt Node Version Manager - không tìm thấy lệnh nvm


303

Tôi đang cố gắng cài đặt NVM theo các hướng dẫn này

Tôi đã gõ lệnh này trong terminal:

$ curl https://raw.github.com/creationix/nvm/master/install.sh | sh

Sau khi chạy cài đặt, tôi khởi động lại thiết bị đầu cuối và cố gắng cài đặt Node.js bằng lệnh này:

$ nvm install 0.8

nhưng tôi nhận được phản hồi:

-bash: nvm: command not found

Tôi không chắc những gì tôi đang làm sai ở đây.

Thông tin bổ sung--

Tôi đã tìm kiếm các giải pháp từ các bài viết và diễn đàn khác. Tôi tìm thấy một giải pháp khác bằng cách sử dụng

$ git clone git://github.com/creationix/nvm.git ~/.nvm

nhưng lần này ra ngoài mỗi lần tôi cố gắng Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn.

Câu trả lời:


369

Kiểm tra của bạn .bash_profile, .zshrchoặc.profile tập tin. Bạn rất có thể đã có một vấn đề trong quá trình cài đặt.

Bạn nên có những điều sau đây ở cuối một trong những tập tin đó.

[[ -s $HOME/.nvm/nvm.sh ]] && . $HOME/.nvm/nvm.sh  # This loads NVM

Giống . $HOME/.nvm/nvm.shnhưsource $HOME/.nvm/nvm.sh

Xem: Tìm nguồn

Bạn cũng có thể kiểm tra xem bạn có .nvmthư mục không.

ls -a | grep .nvm

Nếu bạn thiếu thư mục đó thì cài đặt không chạy được lệnh git. Điều này có thể là do đằng sau một proxy. Thay vào đó, hãy thử chạy như sau.

git clone http://github.com/creationix/nvm.git .nvm

2
Các .nvmnên một thư mục. Nó được cài đặt thông qua lệnh sau git clone git://github.com/creationix/nvm.git $NVM_TARGET. Bạn đã nói rằng bạn đã cố gắng tự chạy lệnh đó và nó đã thất bại? Nhiều khả năng bạn đứng sau một proxy và có thể không được cấu hình. Thay vào đó, hãy thử chạy theo. git clone http://github.com/creationix/nvm.git .nvm
ngày

21
cũng có dòng, nhưng 'nguồn ~ / .nvm / nvm.sh' hoạt động
K - Độc tính trong SO đang tăng lên.

2
Nếu thư mục .nvm trống thì có thể do quá trình tìm nạp repo không thành công do giấy phép thỏa thuận xcode không được chấp nhận. Chạy sudo xcodebuild -licensevà chấp nhận giấy phép (bằng cách thúc đẩy spaceđến cuối giấy phép và đồng ý với các điều khoản của nó) thực hiện thủ thuật.
Pierre Criulanscy

4
Bạn cũng có thể cần source .bashrchoặc source .profiletùy thuộc
Henry Tseng

1
Hầu như luôn luôn những tập tin đó sẽ tồn tại trong thư mục nhà của bạn. source $HOME/.bashrc, v.v.
travis

634

Tôi nghĩ rằng bạn đã bỏ lỡ bước này:

source ~/.nvm/nvm.sh

Bạn có thể chạy lệnh này trên bash HOẶC bạn có thể đặt nó vào tệp /.bashrc hoặc ~ / .profile hoặc ~ / .zshrc để tự động tải nó

https://github.com/creationix/nvm


5
Hãy làm cho tài liệu tốt hơn. Tôi đã tạo ra một vấn đề trên repo nvm: github.com/creationix/nvm/issues/748
Jonny Burger

3
Tôi đã thực hiện điều này bằng tay nhiều lần cho đến khi cuối cùng tôi đưa nó vào .bashrc!
Brady Dowling

2
điều này làm việc cho tôi nhưng để tự động hóa nó, tôi phải tạo hồ sơ trước. "chạm ~ / .profile", "open ~ / .profile", dán ở trên, lưu + đóng. hoạt động trong các cửa sổ mới ngay bây giờ
Sonic Soul

6
Thêm nó vào ~/.bash_profilelà những gì làm việc cho tôi
spencer.sm

6
Điều này làm việc cho tôi. Tôi nói thêm source ~/.nvm/nvm.shđể tôi ~/.zshrcvà bây giờ nvmlàm việc mỗi lần
Eddy Vinck

88

Điều này làm việc cho tôi:

  1. Trước khi cài đặt nvm, hãy chạy nó trong terminal:touch ~/.bash_profile

  2. Sau đó, chạy cái này trong terminal:
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash

  3. Quan trọng ... - KHÔNG quên Khởi động lại thiết bị đầu cuối HOẶC sử dụng lệnh source ~/.nvm/nvm.sh(điều này sẽ làm mới các lệnh có sẵn trong đường dẫn hệ thống của bạn).

  4. Trong terminal, sử dụng lệnh nvm --versionvà bạn sẽ thấy phiên bản


8
3) Đừng quên Khởi động lại thành phần Key terminal của bạn! Đó là lý do tại sao tôi không làm việc. Cảm ơn
Sebastian

1
Làm thế nào để một "Khởi động lại [thành phần] thiết bị đầu cuối" của họ?
Edward

46

source ~/.nvm/nvm.sh Thêm dòng này vào ~ / .bashrc, ~ / .profile hoặc ~ / .zshrc


4
đây là giải pháp "vĩnh cửu" kéo dài qua nhiều lớp vỏ hoặc phiên vỏ.
ahnbizcad

Đây là câu trả lời duy nhất sẽ làm việc. Ngay cả sau khi mở lại nhiều thiết bị đầu cuối. Cuối cùng, đừng quên khởi động lại thiết bị đầu cuối của bạn sau khi bạn làm điều này :)
coderpc

40

Câu trả lời nhanh

Chỉ ra những điều sau đây:

  1. Vỏ nào là thiết bị đầu cuối của bạn sử dụng, nhập vào: echo $0để tìm hiểu (thường hoạt động)
  2. Tập tin khởi động nào tải shell đó khi khởi động (KHÔNG đăng nhập tập tin bắt đầu shell , tập tin bắt đầu shell bình thường , có một sự khác biệt!)
  3. Thêm vào source ~/.nvm/nvm.sh vào tệp đó (giả sử rằng tệp tồn tại ở vị trí đó, đó là vị trí cài đặt mặc định)
  4. Bắt đầu một phiên cuối mới
  5. Lợi nhuận?

Thí dụ

Như bạn có thể thấy nó trạng thái zshvà không bash. nhập mô tả hình ảnh ở đây

Để khắc phục điều này, tôi cần thêm source ~/.nvm/nvm.shvào ~/.zshrctệp như khi bắt đầu một thiết bị đầu cuối mới ~/.zshrc, Deepsh Terminal của tôi đọc và không bash~/.bashrc .

Lý do tại sao điều này xảy ra

Điều này xảy ra bởi vì khi cài đặt NVM, nó sẽ thêm mã vào ~/.bashrc, vì thiết bị đầu cuối Deepin Terminal của tôi sử dụng zshvà không phải bashnó không bao giờ đọc ~/.bashrcvà do đó không bao giờ tải NVM.

Nói cách khác: đây là lỗi của NVM.

Thêm về zshcó thể được đọc trên một trong những câu trả lời ở đây .


bạn có thể chỉ cần đặt zsh vào cuối lệnh curl. ví dụ: curl raw.github.com/creationix/nvm/master/install.sh | zsh
Mitchhakar

22

Trong macOS, tôi đã phải tìm nguồn bằng cách sử dụng source ~/.nvm/nvm.shlệnh để khắc phục vấn đề này.

Sau đó, thêm các dòng này

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

lên ~/.bash_profileđể nvm sẽ có nguồn gốc tự động khi đăng nhập.


11

Tất cả các câu trả lời cho câu hỏi này là hữu ích. Đặc biệt là câu trả lời của Travis đã giúp tôi. Đối với người dùng Mac OS X, tôi muốn cung cấp một số bước sẽ giúp họ làm việc với bản cài đặt mới của Node Version Manager aka nvm.

Cài đặt và sử dụng nvm trên Mac OS X

Dưới đây là các bước để cài đặt mới nvm và sử dụng nó mà không gặp vấn đề gì:

  • Cài đặt homebrew từ đây .
  • Sử dụng homebrew cài đặt nvm

    brew update brew install nvm

  • Tạo .nvmthư mục tại ~/.nvmvị trí.

    mkdir ~/.nvm

  • Bây giờ nếu bạn không có .bash_profilethiết lập tệp cho thiết bị đầu cuối OS X thì hãy tạo một .bash_profilecấp độ gốc:

    nano ~/.bash_profile

  • Dán mã bên dưới vào .bash_profilevà nhấn CTRL + Ovà nhấn enter để lưu .bash_profiletệp. Nhấn CTRL + Xđể thoát khỏi trình chỉnh sửa:

    export NVM_DIR=~/.nvm source $(brew --prefix nvm)/nvm.sh

  • Bây giờ hoặc khá ( CMD + Q) thiết bị đầu cuối hoặc chạy bên dưới lệnh để tải .bash_profilecài đặt:

    source ~/.bash_profile

  • Bây giờ hãy chạy nvm lslệnh để lấy danh sách tất cả các phiên bản nodejs đã cài đặt.


Cảm ơn bạn, tôi nghĩ rằng những gì bỏ lỡ cho tôi đã tạo ra .nvmthư mục.
icarovirtual

11

Đầu tiên thêm các dòng sau vào tệp ~ / .bashrc

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

sau đó mở terminal và tìm tập lệnh nvm.sh

source ~/.nvm/nvm.sh

8

OSX 10.15.0 Catalina (phát hành tháng 11 năm 2019) đã thay đổi vỏ mặc định thành zsh.

Shell mặc định trước đây là bash.

Lệnh cài đặt được đưa ra trên trang nvm GitHub cần được điều chỉnh để bao gồm "zsh" ở cuối.

curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | zsh

Lưu ý: bạn có thể cần đảm bảo .rctệp cho zsh có mặt trước:

touch ~/.zsrhrc

5

Không liên quan trực tiếp đến câu hỏi, nhưng có một vấn đề tương tự có thể xảy ra, hãy xem câu hỏi này: Không thể thực thi nvm từ bash mới


Đây là câu trả lời của tôi trên bài đăng đó, chỉ để tham khảo:

Nếu bạn đang chạy từ một cá thể bash mới và bạn CÓ mã khởi tạo tại ~ / .bashrc, ~ / .bash_profile, v.v., thì bạn cần kiểm tra tệp khởi tạo này để biết các điều kiện.

Trên Ubuntu 14, có một:

case $- in
    *i*) ;;
      *) return;;
esac

Ở dòng 6, điều đó sẽ dừng việc thực thi nếu bash không được chạy với cờ "-i" (tương tác). Vì vậy, bạn sẽ cần phải chạy:

bash -i

Ngoài ra, ở phần cuối của tập tin, có một

[ -z "$PS1" ] && return

Điều đó sẽ dừng việc thực thi nếu không được chạy với tập $ PS1 (như trên phiên ssh từ xa).

Nếu bạn không muốn thêm bất kỳ lọ hoặc cờ env nào, bạn sẽ cần xóa các điều kiện đó khỏi tệp khởi tạo của mình.

Hy vọng điều đó hữu ích.


5

Nếu bạn đang sử dụng OS X, bạn có thể phải tạo tệp .bash_profile trước khi chạy lệnh cài đặt. Điều đó đã làm nó cho tôi.

Tạo tập tin hồ sơ

touch ~/.bash_profile

Chạy lại cài đặt và bạn sẽ thấy một dòng có liên quan trong đầu ra lần này.

=> Nối chuỗi nguồn vào /Users/ đũausernamespl / .bash_profile

Tải lại hồ sơ của bạn (hoặc đóng / mở lại cửa sổ Terminal).

.  ~/.bash_profile

5

Đối với hệ điều hành Mac:

  1. Thiết bị đầu cuối mở
  2. Chạy touch ~/.bash_profile
  3. Chạy vi ~/.bash_profile
  4. Kiểu source ~/.nvm/nvm.sh
  5. Nhấn Shift + Escvà gõ wqvà nhấnenter
  6. Làm xong.

Trong Ubuntu 18.04, tôi chỉ cần: 4. Nhập nguồn ~ / .nvm / nvm.sh và cảm ơn bạn nhiều!
Darnell Lynch

4

Thêm các dòng sau vào tập tin ~/.bashrc~/.bash_profile:

# NVM changes
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

và khởi động lại thiết bị đầu cuối hoặc làm source ~/.bashrchoặc source ~/.bash_profile. Nếu bạn cần hoàn thành lệnh cho nvm thì cũng thêm dòng:

[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

Cùng với các dòng trên ~/.bashrc~/.bash_profile.


4

Đối với MacOS;

Chạy trên Terminal>

open ~/.bash_profile

Dán tất cả những thứ này =

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

2

Tập lệnh cài đặt nvm theo mặc định sẽ thêm mã khởi tạo vào $HOME/.profile chỉ được tải bởi trình đăng nhập (trong môi trường máy tính để bàn, bạn có thể không bao giờ thấy trình đăng nhập).

Lệnh nvm trong shell đăng nhập của bạn không được truyền tới các shell phụ (như cửa sổ giao diện điều khiển và thiết bị đầu cuối IDE sau khi bạn đăng nhập). Đoạn mã này trong bạn $HOME/.bashrcsẽ chỉ tải nvm nếu nó là một vỏ tương tác và chưa được tải

# if nvm dir is not set and the standard nvm directory exists
if [ -z "$NVM_DIR" -a -d "$HOME/.nvm" ] ; then
# set nvm dir
  export NVM_DIR="$HOME/.nvm"
fi

# if nvm dir is set and this shell is interactive
if [ -d "$NVM_DIR" -a -n "$PS1" ] ; then
  # if nvm command is not defined
  if ! type -t nvm >/dev/null ; then
    # set it
    source "$NVM_DIR/nvm.sh"
  fi
fi

Đặt cái này vào $HOME/.bashrctệp của bạn sẽ khắc phục vấn đề nvm bị thiếu trong shell bash tương tác, thậm chí từ gui và ngay cả khi nvm được cài đặt ở vị trí không chuẩn.


2

Tôi đã sửa vấn đề này.

  1. chạm ~ / .bash_profile
  2. mở ~ / .bash_profile
  3. dánexport NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

2

Đối với vấn đề đã được khắc phục khi tôi di chuyển

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

đến cuối .zshrc


1

Trên Debian, cũng như thêm các dòng dưới đây vào .bash_profile của tôi như một trong những câu trả lời ở trên. Tôi cũng phải mở tùy chọn thiết bị đầu cuối của mình (Chỉnh sửa -> Tùy chọn hồ sơ -> Lệnh) và bật 'Chạy lệnh dưới dạng vỏ đăng nhập' để làm cho nó hoạt động.

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

Chỉnh sửa: Đối với những người trên Mac, hãy lưu ý rằng macOS không đọc .bashrc khi khởi động Terminal, vì vậy sử dụng .bash_profile là thích hợp hơn. Xem tại đây.


1

Đối với trường hợp của tôi, nó vì tôi sử dụng . Nếu tôi không bắt đầu , chỉ cần gõ nvm sẽ không có lỗi bây giờ.


Làm thế nào bạn ngăn chặn ?
Matko

exit @MobileDream.
JerryZhou

1

Điều Windows 8.1 x64tương tự cũng xảy ra với tôi, và nhận được tin nhắn sau.

nvm cài đặt 8.3.0 bash: nvm: lệnh không tìm thấy windows

Vì vậy, hãy làm theo hoặc xác minh các bước sau đây-

cài đặt đầu tiên coreybutler/nvm-windowstừ github.com. Bản phát hành mới nhất hiện có 1.1.5 nvm-setup.zip, sau đó trích xuất thiết lập nvm-setup.exevà cài đặt như các vị trí sau:

NVM_HOME    : C:\Users\Administrator\nvm
NVM_SYMLINK : C:\Program Files\nodejs

và trong khi đó thiết lập sẽ quản lý biến môi trường Pathnhư đã nói ở trên cho bạn.

Bây giờ chạy Git Bashvới tư cách Quản trị viên và sau đó.

$ nvm install 8.3.0 all

Downloading node.js version 8.3.0 (64-bit)...
Complete
Creating C:\Users\Administrator\nvm\temp

Downloading npm version 5.3.0... Complete
Installing npm v5.3.0...

Installation complete. If you want to use this version, type

nvm use 8.3.0

$ nvm use 8.3.0
Now using node v8.3.0 (64-bit)

Ở đây chạy lệnh của bạn mà không sử dụng tiền tố $, nó chỉ được hiển thị ở đây để xác định nó là một dòng lệnh và bây giờ chúng tôi sẽ xác minh phiên bản nvm.

$ nvm --version
Running version 1.1.5.

Usage:
-----------------------

nếu bạn gặp sự cố khi sử dụng nvmđể cài đặt node, bạn có thể xem danh sách các nodejsbản phát hành có sẵn ở đây https://nodejs.org/download/release/và chọn trình cài đặt chính xác theo phiên bản yêu cầu của bạn bằng hoặc cao hơnv6.3.0 trực tiếp.


0

Đối với tôi điều này đã làm việc. Trước tiên hãy kiểm tra xem tệp .bashrccó dòng sau không

[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

Bây giờ bashrcđược tải cho mỗi phiên thiết bị đầu cuối. Do đó, khởi động lại thiết bị đầu cuối để nó được tải lại và bạn nên đi.


0

Gần đây tôi cũng gặp phải vấn đề tương tự và tìm nguồn cung cấp tập lệnh bv nvm bằng cách sử dụng nguồn ~ / .nvm / nvm.sh đã giải quyết vấn đề này.


0

Sử dụng các mã sau

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash`
source ~/.nvm/nvm.sh`
nvm install 0.8

0

Sau khi thử nhiều bước, không chắc vấn đề trong trường hợp của tôi là gì nhưng việc chạy này đã giúp:

touch ~/.bash_profile
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash

Xác nhận qua nvm --version

đầu ra nvm -v

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.