nvm giữ cho Wikipedia quên nút nút trong phiên cuối mới


546

Khi sử dụng phiên cuối mới trong OS X, hãy nvmquên phiên bản nút và mặc định là không có gì:

$ nvm ls:

         .nvm
     v0.11.12
     v0.11.13

Tôi phải tiếp tục đánh nvm use v.0.11.13trong mỗi phiên:

         .nvm
     v0.11.12
->   v0.11.13

Tôi đã thử cả brewcài đặt, cũng như tập lệnh cài đặt chính thức.

My .profilecho phiên bản bia:

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

Và đối với tập lệnh install.sh:

$ curl https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash

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

Có manh mối nào cho những gì tôi đang làm sai không?


1
Chỉ muốn thêm cái này vào đây - Hãy chắc chắn rằng bạn xuất từ .bash_profilechứ không phải của bạn.bashrc
James111

Câu trả lời:


1181

Hãy thử nvm alias default. Ví dụ:

$ nvm alias default 0.12.7

Cái này đặt phiên bản nút mặc định trong shell của bạn. Sau đó, xác minh rằng thay đổi vẫn tồn tại bằng cách đóng cửa sổ shell, mở một cái mới, sau đó: node --version


11
Đây không phải là công việc của nvm sử dụng sao? Sau $ nvm alias default 0.11.13$ nvm use 0.11.12, tôi nhận được node --version = 0.11.12. Tuy nhiên, trong một phiên mới, nút lại biến mất. Trong debian, tôi không có vấn đề này cả.
frhd

4
Được rồi, Ive đã có một lỗi đánh máy : nvm alias defaul X. Với việc sử dụng đúng nó thực sự hoạt động. Vì vậy, quy trình làm việc sẽ là nvm install Xsau đó nvm alias default X, tôi đoán. Cảm ơn đã giúp đỡ!
frhd

21
Tôi đã có cùng một vấn đề và đó là vì tôi đã xuất khẩu NVM_DIRsau đó nvm.sh. Hãy chắc chắn để xuất khẩu NVM_DIRtrước.
maxwell2022

11
Lưu ý rằng nvm alias defaultkhông đặt phiên bản nút cho môi trường hiện tại, chỉ dành cho tất cả các phiên bản mới.
ericsoco

28
Nếu điều đó không hiệu quả, hãy đảm bảo trong .bash_profile( .bashrchoặc bất cứ điều gì) bạn không có bất cứ điều gì sửa đổi PATHsausource xx/nvm.sh
thiện chí

85

Bí danh cho nodechính nó để tránh cập nhật bí danh mặc định cùng với các bản cập nhật phiên bản nút sau này.

nvm alias default node

2
! CẢNH BÁO: Phiên bản 'nút' không tồn tại. mặc định -> nút (-> N / A)?
House3272

6
Thế còn node alias default stable?
Pierre Henry

1
Tôi không nghĩ bạn muốn sử dụng stablenữa. Từ các tài liệu nvm: "ổn định: bí danh này không được dùng nữa và chỉ thực sự áp dụng cho nút v0.12 trở về trước. Hiện tại, đây là bí danh cho nút."
pherris

1
Để nodemặc định này? Nút được cài đặt và sử dụng bởi NVM trong trình bao hiện tại hoặc Nút có thể được cài đặt trên hệ thống bằng gói cài đặt của Node hoặc Homebrew, v.v.?
2540625

7
(nvm duy trì ở đây) node(và stable, nhưng mọi thứ được phát hành trong semver đều ổn định, vì vậy đó là một từ vô dụng) sử dụng phiên bản mới nhất có sẵn. Đối với các lệnh cục bộ, cài đặt mới nhất; cho các lệnh từ xa, mới nhất có sẵn.
LJHarb

40

Để cài đặt phiên bản ổn định mới nhất:

nvm install stable

Để đặt mặc định thành phiên bản ổn định (thay vì phiên bản cụ thể):

nvm alias default stable

Để liệt kê các phiên bản đã cài đặt:

nvm list

Kể từ v6.2.0đó, nó sẽ trông giống như:

$ nvm list
         v4.4.2
->       v6.2.0
default -> stable (-> v6.2.0)
node -> stable (-> v6.2.0) (default)
stable -> 6.2 (-> v6.2.0) (default)
iojs -> N/A (default)

Điều này hoạt động rất tốt và gợi ý sử dụng nvm listgiúp người dùng hình dung những gì đang xảy ra với phiên bản của họ. Cảm ơn!
Solvitieg

30

Trong trường hợp của tôi, một chương trình khác đã thêm các PATHthay đổi vào.bashrc

Nếu chương trình khác thay đổi PATH sau khi khởi tạo nvm, thì các PATHthay đổi của nvm sẽ bị quên và chúng ta sẽ nhận được nút hệ thống trên PATH(hoặc không có nút).

Giải pháp là di chuyển thiết lập nvm xuống dưới cùng của.bashrc

### BAD .bashrc ###

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

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

Giải pháp:

### GOOD .bashrc ###

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

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

(Đây là với bash 4.2.46 trên CentOS. Nó có vẻ như là một lỗi trong bash, nhưng tôi có thể bị nhầm lẫn.)


1
Điều này đã giúp tôi! Mặc định đã bị mắc kẹt.
Redsandro

1
Hãy cho anh chàng này một huy chương! Tôi đã tải thêm các tệp * RC khác trong zshrc của mình sau khi xuất NVM_DIR, nó làm tôi phát điên. Cảm ơn bạn!
bolltables

Cảm ơn bạn! Điều này đã lái tôi bonkers.
Cây

27

nvm thực hiện công việc của mình bằng cách thay đổi biến PATH, vì vậy bạn cần chắc chắn rằng bạn không bằng cách nào đó thay đổi PATH của bạn thành một thứ khác sau khi tìm nguồn của tập lệnh nvm.sh.

Trong trường hợp của tôi, nvm.sh đã được gọi trong .bashrc nhưng sau đó biến PATH đã được cập nhật trong .bash_profile khiến phiên của tôi tìm thấy nút hệ thống trước nút nvm.


1
Làm thế nào tôi có thể kiểm tra điều này? Tôi nghi ngờ đây là trường hợp.
Fuzz nhẹ

đây là trường hợp của tôi cảm ơn! tôi đã đặt xuất khẩu lên trên cùng trên tệp .zshrc của mình, chỉ cần di chuyển nó xuống dưới cùng và vấn đề đã được giải quyết
Alejandro Silva

Đó là trường hợp của tôi. Giải pháp là di chuyển mục nhập NVM ~ / .bash_profile đến cuối tập tin + bộ nvm alias defaultnvm useđến phiên bản tôi cần.
Eugene Tartakovsky

Đây là giải pháp cho tôi. Đã chuyển phần sau xuống dưới cùng .bashrc: export NVM_DIR="$HOME/.nvm"sau đó. "/usr/local/opt/nvm/nvm.sh"
asmiller

10

Các giải pháp được đánh giá hàng đầu dường như không hiệu quả với tôi. Giải pháp của tôi là dưới đây:

  1. Gỡ cài đặt hoàn toàn nvm bằng homebrew:brew uninstall nvm
  2. Cài đặt lại brew install nvm
  3. Trong Terminal, hãy làm theo các bước dưới đây (những điều này cũng được liệt kê khi cài đặt nvm qua homebrew):

    mkdir ~ / .nvm cp $ (brew --prefix nvm) / nvm-exec ~ / .nvm / export NVM_DIR = ~ / .nvm nguồn $ (brew --prefix nvm) /nvm.sh

Các bước được nêu ở trên sẽ thêm thư mục làm việc của NVM vào đường dẫn $ HOME của bạn, sao chép nvm-exec vào thư mục làm việc của NVM và thêm vào $ HOME / .bashrc, $ HOME / .zshrc hoặc tệp cấu hình tương đương của shell của bạn. được liệt kê trên bản cài đặt NVM bằng homebrew)


7

Nếu bạn đã thử mọi thứ vẫn không gặp may, bạn có thể thử điều này: _

1 -> Gỡ cài đặt NVM

rm -rf ~/.nvm

2 - phụ thuộc> Remove NPM bằng cách làm theo này

3 -> Cài đặt NVM

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

4 -> Đặt ~/.bash_profilecấu hình

Chạy sudo nano ~/.bash_profile

Sao chép và dán sau đây

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

5 -> CONTROL + Xlưu các thay đổi

6 -> Chạy . ~/.bash_profile

7 -> Bây giờ bạn đã nvmcài đặt trên máy của mình, để cài đặt nút chạy, nvm install v7.8.0đây sẽ là phiên bản nút mặc định hoặc bạn có thể cài đặt bất kỳ phiên bản nút nào


1
Cảm ơn rất nhiều! Đây là giải pháp duy nhất thiết lập đường dẫn nút trong bash và hoạt động với tôi. Tôi chỉ sử dụng "nút cài đặt nvm" để cài đặt phiên bản nút mới nhất thay vì sử dụng "nvm install v7.8.0"
user3492435

5

Câu hỏi này đã được đề cập cho OSX, nhưng nó đã xảy ra với tôi trong hệ điều hành linux của tôi. Tôi đã thử sử dụng nvm alias default <version>nhưng với mỗi phiên thiết bị đầu cuối mới, phiên bản nút được sử dụng đã bị lãng quên. Vì vậy, đây là giải pháp mà tôi đã tìm ra.

đảm bảo đặt bí danh mặc định cho phiên bản nút , đặt đoạn mã sau vào .bashrc và source .bashrc.

export NVM_DIR="/home/bonnie/.nvm"
## If the file exists and is not empty
if [ -s "$NVM_DIR/nvm.sh" ]; then
    ## Source it
    source "$NVM_DIR/nvm.sh"
fi
NODE_DEFAULT_VERSION=$(<"$NVM_DIR/alias/default")
export PATH="$NVM_DIR/versions/node/$NODE_DEFAULT_VERSION/bin":$PATH

liên kết giải pháp mô tả


1
Chỉ cần một lưu ý, điều này phụ thuộc vào việc bao gồm vtrong phiên bản khi cài đặt điều khiển từ xa. Ví dụ v4.2.4thay vì 4.2.4.
vaughan

4

Làm như nvm install 10.14, ví dụ, sẽ nvm usecó phiên bản dành cho phiên shell hiện tại nhưng nó sẽ không luôn đặt nó làm mặc định cho phiên trong tương lai như bạn mong đợi. Phiên bản nút bạn nhận được trong phiên shell mới được xác định bởi nvm alias default. Một cách khó hiểu, nvm installsẽ chỉ đặt bí danh mặc định nếu nó chưa được đặt. Để có được hành vi mong đợi, hãy làm điều này:

nvm alias default ''; nvm install 10.14

Điều này sẽ đảm bảo rằng phiên bản đó được tải xuống, sử dụng nó cho phiên hiện tại đặt nó làm mặc định cho các phiên trong tương lai.


3

chạy cái này sau khi bạn cài đặt bất kỳ phiên bản nào

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local

Lệnh này đang sao chép bất kỳ phiên bản nút nào bạn đã kích hoạt qua nvm vào thư mục / usr / local / và đặt quyền để tất cả người dùng có thể truy cập chúng.


Tôi khuyên bạn nên sử dụng &&s thay vì ;s trong lệnh đó. Nếu whichkhông tìm thấy nút, chúng tôi không muốn tiến hành chmod /bin/*!
joeytwiddle


2

Tôi đang sử dụng ZSH nên tôi phải sửa đổi ~/.zshrcvới các dòng liên quan đến NVM theo thứ tự đó:

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

1
$ nvm alias default {NODE_VERSION}

Khi chúng ta sử dụng lệnh trên, chỉ cập nhật phiên bản nút nhưng npmvẫn sử dụng phiên bản cũ.

Đây là một giải pháp khác để cập nhật cả hai nodenpm, trong trường hợp của tôi, tôi muốn sử dụng nút 8.9.4và tôi đã sử dụng lệnh dưới đây.

$ nvm use default 8.9.4

Và lệnh trả về đầu ra.

Hiện đang sử dụng nút v8.9.4 (npm v5.6.0)


0

Nếu bạn cũng có SDKman ...

Bằng cách nào đó SDKman đã xung đột với NVM của tôi. Nếu bạn đang ở cuối cùng với điều này mà vẫn không thể hiểu được, tôi chỉ sửa nó bằng cách bỏ qua "ĐIỀU NÀY PHẢI Ở KẾT THÚC ..." từ SDKman và đặt các dòng NVM sau nó.

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/Users/myname/.sdkman"
[[ -s "/Users/myname/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/myname/.sdkman/bin/sdkman-init.sh"

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

0

Tôi đã gặp vấn đề tương tự trong khi sử dụng thiết bị đầu cuối tích hợp trong trình soạn thảo Mã VS. Khởi động lại mã VS sau khi thay đổi phiên bản nút bằng nvm đã khắc phục sự cố cho tôi.


0

Đây là một hướng dẫn đơn giản:

1) Cài đặt:

nvm install 8.10.0

2) Sử dụng một lần cho mỗi thiết bị đầu cuối

nvm use 8.10.0

3) Thiết lập làm mặc định cho tất cả các thiết bị đầu cuối

nvm alias default 8.10.0

Bạn có thể cần sử dụng quyền root để thực hiện các hành động đó.

Và đừng quên kiểm tra tài liệu nvm để biết thêm thông tin.

Cũng lưu ý rằng bạn có thể cần chỉ định phiên bản nút cho IDE của mình: nhập mô tả hình ảnh ở đây


-2

Ngoài ra trong trường hợp bạn đã cài đặt nút trước khi nvm kiểm tra ~ / .bash_profile của bạn để không có cái gì đó như:

export PATH=/bin:/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH

Nếu bạn có nó, bình luận / loại bỏ nó và nvm nên bắt đầu xử lý phiên bản nút mặc định.


Đặt biến đường dẫn không liên quan gì đến lựa chọn phiên bản nvm, chắc chắn?
sn0r

nvm.sh nên sửa đổi PATH của bạn sau khi bạn đặt nó (ví dụ như ở trên). Điều này cho phép nvm đặt thư mục phiên bản của nó trước / usr / local / bin nơi phiên bản "hệ thống" của nút sống.
Denis Howe

-3

Sau một thời gian dài mâu thuẫn với vấn đề này, tôi đã tìm ra cách khắc phục nó. Đây là một giải pháp từng bước cho vấn đề:

  • Mở terminal & Cài đặt công cụ phát triển dòng lệnh:

    xcode-select --install

  • Nhấn Enter

  • Cài đặt phiên bản mới nhất của NVM:

    cd ~/

  • Nhấn Enter

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

  • Nhấn Enter
  • Trong trường hợp bạn đã tạo thư mục .nvm trước đó, bạn sẽ thấy thông báo lỗi tiếp theo:

    fatal: destination path '.nvm' already exists and is not an empty directory.

    Khác, bạn sẽ thấy quá trình nhân bản chạy cho đến khi nó được thực hiện.

  • Kiểm tra phiên bản NVM mới nhất:

    cd ~/.nvm

  • Nhấn Enter

    git checkout v0.34.0

    Bạn sẽ nhận được phản hồi tương tự như:

    HEAD is now at 3d9c31d v0.34.0

    Phiên bản có thể khác nhau trên các hệ thống khác nhau.

    ls

  • Nhấn Enter

    . nvm.sh

  • Nhấn Enter

    nvm list

  • Nhấn Enter

    Bạn sẽ thấy các phiên bản nút khác nhau được cài đặt trên máy của mình, có thể có một số lỗi, đừng chú ý đến chúng.

    nvm ls-remote | tail -n9

  • Nhấn Enter

    nvm list

  • Mở bash bằng vim:

    vim ~/.bash_profile

  • Bên trong trình soạn thảo vim nhấn: iđể nhập INSERT modevà bắt đầu một dòng mới. Nếu bạn có bất kỳ lỗi nào khi chỉnh sửa, hãy bấm ESCphím và sau đó :q!để thoát mà không lưu.

    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

  • Nhấn ESCphím khi bạn hoàn thành chỉnh sửa tệp (bạn sẽ thấy chế độ INSERT biến mất).

  • Nhấn :wqđể lưu tệp.
  • Nhấn Enter

    nvm ls-remote | tail -n9

  • Nhấn enter và cài đặt phiên bản nvm mới nhất được trình bày:

    nvm install 12.6.0

  • Khi quá trình kết thúc, bạn sẽ thấy: Now using node v12.6.0 (npm v6.9.0)

  • Bạn có thể kiểm tra nếu cài đặt thành công bằng cách nhấn:

    node -vhoặc npm -v, nó sẽ hiển thị cho bạn các phiên bản của cả nvm và npm được cài đặt trên hệ thống của bạn.

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.