Browserify error / usr / bin / env: node: Không có tệp hoặc thư mục nào như vậy


85

Tôi đã cài đặt nút js và npm thông qua apt-get install và tất cả các phần phụ thuộc, sau đó tôi cài đặt Browserify

npm install browserify -g

nó trải qua quá trình và có vẻ như nó đã được cài đặt chính xác, nhưng khi tôi cố gắng thực hiện một nhóm đơn giản theo hướng dẫn này

Tôi gặp lỗi:

/ usr / bin / env: node: Không có tệp hoặc thư mục nào như vậy

nhập mô tả hình ảnh ở đây


hmm, bạn nên kiểm tra xem tệp thực thi của nút nằm trong / usr / bin hoặc / usb / bin / env ít nhất đây là một vấn đề cụ thể về hoạt động. Bạn có thể giải quyết vấn đề này bằng cách cài đặt Browserify cục bộ.
bodokaiser

tệp thực thi browserfy của tôi nằm trong / usr / local / bin / nhưng nó đang gọi thứ gì đó khác khiến đường dẫn bị lộn xộn?
Eduardo Dennis

3
à bạn phải liên kết biểu tượng nodejs với node trên ubuntu. Ubuntu cài đặt nút như nodejs sau đó bạn phải làm điều gì đó như "ln -s / usr / bin / nodejs / usr / bin / nút" để hệ thống cũng thấy nó như nút
bodokaiser

1
điều đó đã giải quyết được nó: -Tôi đã suy nghĩ về điều này trong giờ qua, bạn có thể vui lòng đặt ở dạng câu trả lời để chấp nhận không?
Eduardo Dennis

1
vui vì nó làm việc không chắc chắn nếu nó thực sự là vấn đề này thats tại sao tôi nhận xét đầu tiên :)
bodokaiser

Câu trả lời:


246

Một số bản phân phối linux cài đặt nodejs không phải là "node" thực thi được mà là "nodejs".

Trong trường hợp này, bạn phải liên kết thủ công với "nút" vì nhiều gói được lập trình sau nhị phân "nút". Một cái gì đó tương tự cũng xảy ra với "python2" không được liên kết với "python".

Trong trường hợp này, bạn có thể tạo một liên kết tượng trưng dễ dàng. Đối với các bản phân phối linux, /usr/binbạn có thể thực hiện cài đặt mã nhị phân gói

ln -s /usr/bin/nodejs /usr/bin/node

5
Đây không phải là giải pháp cho Ubuntu 14.04 vì /usb/sbin/nodelà ax24-node (không liên quan đến nodejs). Chỉ liên kết tượng trưng với /usr/bin/nodesẽ không hoạt động vì /usr/sbin/nodeđến trước trong$PATH
Gareth

8
cách chính xác để giải quyết vấn đề này là sử dụng update-alternatives. xem câu trả lời của tôi ở đây stackoverflow.com/a/24592328/454615
airtonix

1
thực sự suy nghĩ nhiều hơn về điều này ... các mã nhị phân liên kết biểu tượng xung quanh như thế này là một thói quen tuyệt vời để áp dụng nếu bạn đang muốn phá vỡ hệ thống của mình.
airtonix

yea Tôi đã nhận thấy nó phá vỡ nó theo những cách tinh tế, bạn đã tìm ra giải pháp tốt hơn chưa?
Eduardo Dennis

1
@EduardoDennis vâng, sử dụng update-alternatives. nó tồn tại cho những tình huống chính xác này.
airtonix

52

Câu trả lời mới:

  1. Gỡ cài đặt bất kỳ gói nodejs nào bạn đã cài đặt thông qua trình quản lý gói hệ thống của mình (dnf, apt-get, v.v.), xóa mọi liên kết tượng trưng ngớ ngẩn mà bạn đã tạo lại mỗi lần nâng cấp (lol).
  2. Cài đặt NVM,
  3. sử dụng nvm để cài đặt nodejs: nvm cài đặt 6

Câu trả lời cũ:

Bất kỳ cuộc nói chuyện nào về việc tạo liên kết tượng trưng hoặc cài đặt một số gói nút khác đều là giả mạo và không bền vững.

Cách chính xác để giải quyết vấn đề này là:

  1. đơn giản cài đặt gói nodejs với apt-get như bạn đã có
  2. sử dụng update-alternativesđể chỉ ra tệp nhị phân nodejs của bạn chịu trách nhiệm về#!/usr/bin/env node

Như vậy:

sudo apt-get install nodejs
sudo update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100

Điều này giờ đây trở nên bền vững trong suốt quá trình nâng cấp gói, nâng cấp bản phân phối, v.v.


Đây là một giải pháp cho vấn đề của tôi stackoverflow.com/questions/26155795/...
Alon Carmel

Cảm ơn, giải pháp tuyệt vời, thủ thuật với liên kết tượng trưng là thủ thuật được lặp lại nhiều nhất trên mạng nhưng không hiệu quả với tôi.
Emilia Tyl

Câu trả lời thực sự đúng bây giờ là sử dụng NVM trên Linux và Nodist trên Windows.
airtonix

35

Chạy đi apt-get install nodejs-legacy.

Một số bản phân phối linux nhất định đã thay đổi tên nhị phân node.js khiến nó không tương thích với nhiều gói node.js. Gói nodejs-legacycung cấp một liên kết biểu tượng để giải quyết vấn đề này.


2
Đây là giải pháp cho Ubuntu 14.04 vì /usb/sbin/nodelà ax24-node (không liên quan đến nodejs). Chỉ liên kết tượng trưng với /usr/bin/nodesẽ không hoạt động vì /usr/sbin/nodeđến trước trong$PATH
Gareth

Đã giúp tôi ra ngoài. Cảm ơn!
Lapidus

apt-get cài đặt nodejs-inherit. cho biết đối với người dùng windows, 'apt-get' không được nhận dạng là lệnh nội bộ hoặc bên ngoài, chương trình có thể hoạt động hoặc tệp hàng loạt.
Swift

7

Bạn cũng có thể cài đặt Nodejs bằng NVM hoặc Nodejs Version Manager . Có rất nhiều lợi ích khi sử dụng trình quản lý phiên bản. Một trong số họ là bạn không phải lo lắng về vấn đề này.


Hướng dẫn:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

Sau khi các gói điều kiện tiên quyết được cài đặt, bạn có thể kéo xuống tập lệnh cài đặt nvm từ trang GitHub của dự án. Số phiên bản có thể khác nhau nhưng nhìn chung bạn có thể tải về và cài đặt theo cú pháp sau:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Thao tác này sẽ tải xuống tập lệnh và chạy nó. Nó sẽ cài đặt phần mềm vào một thư mục con của thư mục chính của bạn tại ~/.nvm. Nó cũng sẽ thêm các dòng cần thiết vào ~/.profiletệp của bạn để sử dụng tệp.

Để có quyền truy cập vào chức năng nvm, bạn sẽ cần đăng xuất và đăng nhập lại hoặc bạn có thể nguồn tệp ~ / .profile để phiên hiện tại của bạn biết về các thay đổi:

source ~/.profile

Bây giờ bạn đã cài đặt nvm, bạn có thể cài đặt các phiên bản Node.js riêng biệt.

Để tìm hiểu các phiên bản Node.js có sẵn để cài đặt, bạn có thể nhập:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

Như bạn có thể thấy, phiên bản mới nhất tại thời điểm viết bài này là v0.11.14. Bạn có thể cài đặt bằng cách gõ:

nvm install 0.11.14

Thông thường, nvm sẽ chuyển sang sử dụng phiên bản được cài đặt gần đây nhất. Bạn có thể yêu cầu nvm sử dụng phiên bản chúng tôi vừa tải xuống một cách rõ ràng bằng cách nhập:

nvm use 0.11.14

Khi bạn cài đặt Node.js bằng nvm, tệp thực thi được gọi là nút. Bạn có thể xem phiên bản hiện đang được shell sử dụng bằng cách gõ:

node -v

Hướng dẫn comeplete có thể được tìm thấy ở đây


vâng, cộng một cho người quản lý phiên bản môi trường. chắc chắn là một câu trả lời tốt hơn nhiều so với của tôi mặc dù chúng tôi đều là cách chính xác để làm điều này. Tôi sẽ nói rằng nvm nhắm đến nhiều hơn vào các máy trạm tương tác chứ không phải máy chủ sản xuất (nhưng tôi không thể hiểu tại sao người ta không thể sử dụng nó ở đó) ... cá nhân tôi có xu hướng sử dụng hình ảnh docker trong sản xuất hơn.
airtonix


0

Tôi có vẻ như cùng một vấn đề khi tôi xây dựng nguyên tử trong Linux.

sudo apt-get install nodejs-dev

Sửa câu hỏi của tôi. Rất hữu ích cho bạn.


0

Nếu bạn không muốn liên kết biểu tượng, bạn có thể làm điều này. hoạt động trong ubuntu

#!/usr/local/bin/node --harmony

thẻ hòa âm dành cho hòa âm ECMAscript mới


0
  1. chạy lệnh which nodekết quả sẽ là một cái gì đó

    /home/moh/.nvm/versions/node/v8.9.4/bin/node

  2. Sao chép đường dẫn mà bạn đã có ở trên, sau đó chạy lệnh ở bước 3.

  3. ln -s /home/moh/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node


-1

Bạn phải gọi "nodejs" chứ không phải "node". Để xác minh điều này, hãy gõ node -vvào shell: nếu không tìm thấy gì, hãy thử nodejs -v. Nếu điều đó hiển thị số phiên bản, thì lệnh bạn nên sử dụng là nodejsvà không node. Do đó, bạn phải thay đổi lệnh gọi để duyệt trong tập lệnh của mình từ nodethành nodejs(như hình bên dưới): thay thế

#!/usr/bin/env node

với

#!/usr/bin/env nodejs

Bạn cũng có thể phải mở script với tư cách là superuser.

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.