Lỗi: Không thể tìm thấy mô-đun '../lib/utils/unsupported.js' trong khi sử dụng Ionic


262

Tôi luôn nhận được thông báo lỗi này khi chạy "Tên dự án bắt đầu Ionic":

Thông báo lỗi

Running command - failed![ERROR] An error occurred while running npm install (exit code 1):

    module.js:471
        throw err;
        ^

    Error: Cannot find module '../lib/utils/unsupported.js'
        at Function.Module._resolveFilename (module.js:469:15)
        at Function.Module._load (module.js:417:25)
        at Module.require (module.js:497:17)
        at require (internal/module.js:20:19)
        at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
        at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:79:3)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)

Đường dẫn tương đối sai ..
Subburaj

kiểm tra đường dẫn trong ./bash_profile
Mohan Gopi

Trên MacOS - cài đặt lại từ nodejs.org giúp xem các bản nâng cấp của stackoverflow.com/a/12313655/1497139
Wolfgang Fahl

Câu trả lời:


774

Cố gắng loại bỏ /usr/local/lib/node_modules/npmvà cài đặt lại nút một lần nữa. Điều này nên làm việc.

Trên MacOS với Homebrew :

sudo rm -rf /usr/local/lib/node_modules/npm
brew reinstall node

1
nếu bất cứ ai muốn đến đó thông qua công cụ tìm: kiến
thức.autodesk.com

13
Nếu bạn đang sử dụng brew thì bạn có thể sử dụng: brew unistall --force nodebrew install node
Nico

15
@Nico lệnh đầu tiên có lỗi đánh máy. Sự điều chỉnh sẽ là brew uninstall --force node.
Jayant Bhawal

11
tại sao nó lại xảy ra
Gaurav Paliwal

4
Sau khi thực hiện các lệnh trên, bây giờ nhận >> -bash: / usr / local / bin / npm: Không có tệp hoặc thư mục như vậy
Tarun

81

Tôi đã làm theo các câu trả lời trước và nút cài đặt lại. Nhưng tôi đã nhận được lỗi này.

Cảnh báo: Bước sau khi cài đặt không hoàn thành thành công Bạn có thể thử lại bằng cách sử dụng brew postinstall node

Vì vậy, tôi đã chạy lệnh này

sudo chown -R $(whoami):admin /usr/local/lib/node_modules/

Sau đó chạy

brew postinstall node

cách khác, bạn có thể chạy sudo chown -R $ (whoami) $ (brew --prefix) / *
Pathfinder

27

Tôi đã nhận được một lỗi tương tự và bây giờ nó đã hoạt động.

Trước tiên hãy chắc chắn rằng bạn có phiên bản mới nhất

brew update

Xóa phiên bản nút trước đó của bạn:

brew uninstall node

Sau đó cài đặt lại phiên bản mới nhất:

brew install node

Và sau đó đảm bảo rằng nó được liên kết thành / usr / local nếu nó chưa được. Bạn sẽ nhận được một lỗi để cho bạn biết để hoàn thành bước này.

brew link --overwrite node 

Thông tin chi tiết về cách cài đặt / nâng cấp nút cũng có sẵn .


12
Bạn có thể sử dụng brew uninstall --ignore-dependencies nodenếu, ví dụ, bạn có yarntrong hệ thống của mình.
Sound Blaster

18

Trên Mac OS X (10.12.6), tôi đã giải quyết vấn đề này bằng cách thực hiện như sau:

brew uninstall --force node
brew install node

Sau đó tôi đã gặp một lỗi phàn nàn rằng cài đặt nút không thành công và chạy lại brew postinstall node

Sau đó tôi đã gặp một lỗi:

permission denied @ rb_sysopen /usr/local/lib/node_modules/npm/bin/npx

Tôi đã khắc phục lỗi đó bằng cách:

sudo chown -R $(whoami):admin /usr/local/lib/node_modules

Và bây giờ tôi không nhận được lỗi này nữa.


1
Tôi đã phải lặp lại điều này một vài lần, trên các thư mục khác nhau cần được tạo hoặc cần thay đổi quyền sở hữu của họ (với người dùng của tôi). Mỗi lần tôi sẽ chạy brew postinstall nodeđể tìm vấn đề tiếp theo, sửa nó, lặp lại.
T. Kim Nguyễn

9

Nếu bạn đang sử dụng thư viện "n" @ https://github.com/tj/n . Làm như sau

  echo $NODE_PATH

Nếu đường dẫn nút trống, thì

sudo n latest    - sudo is optional depending on your system

Sau khi chuyển đổi các phiên bản Node.js bằng n, npm có thể không hoạt động đúng.

curl -0 -L https://npmjs.com/install.sh | sudo sh
echo NODE_PATH

Bạn sẽ thấy Đường dẫn nút của bạn bây giờ. Khác, nó có thể là một cái gì đó khác


8

Như đã đề cập trước đây.

 sudo rm -rf /usr/local/lib/node_modules/npm
 brew uninstall --force node                
 brew install node

6

Đã thử tất cả các câu trả lời cài đặt bia trên / cũ hơn, không có cái nào hoạt động cho máy tính xách tay của tôi.

Chỉ có phương pháp dưới đây có thể khắc phục vấn đề của tôi.

1) Chạy các lệnh sau:

sudo rm -rf /usr/local/lib/node_modules/npm
brew uninstall --force node      

2) Sau đó, hãy tiếp tục đến Trang web chính thức của Node.js https://nodejs.org/en/doad/civerse/ để tải xuống gói mới nhất để cài đặt mới.

3) Chạy lại lệnh npm của bạn, điều này sẽ không có lỗi.

Phương pháp này đang hoạt động trên macOS Mojave Phiên bản 10.14.4 .



2

Có, bạn nên cài đặt lại nút:

sudo rm -rf /usr/local/lib/node_modules/npm
 brew uninstall --force node                
 brew install node

2

Đơn giản chỉ cần làm theo ba bước;

  1. Xóa npmbộ nhớ cache mạnh mẽ:

    npm cache clean -f

  2. Cài đặt ngói trên toàn cầu bằng cách sử dụng npm:

    npm install -g n

  3. Cài đặt từ bất kỳ trong ba tùy chọn:

    a. sudo n stable (get the stable version)

    b. sudo n latest (get the latest version of node)

    c. sudo n x.x.x (get the specific version of node)


2

Lỗi Cannot find module '../lib/utils/unsupported.js'là do require('../lib/utils/unsupported.js')trong ./lib/node_modules/npm/bin/npm-cli.js.

Theo các requiretài liệu của nodejs , mô-đun cần thiết được tìm kiếm liên quan đến tệp, khi nó bắt đầu bằng ../.

Do đó, nếu chúng ta lấy đường dẫn tương đối ../lib/utils/unsupported.jsbắt đầu từ ./lib/node_modules/npm/bin/npm-cli.js, mô-đun cần thiết phải nằm trong ./lib/node_modules/npm/lib/utils/unsupported.js. Nếu nó không ở đó, tôi thấy hai tùy chọn:

  • cài đặt bị hỏng, trong trường hợp đó , câu trả lời của Vincent Ducastel để cài đặt lại nút có thể hoạt động
  • npmkhông có liên kết tượng trưng đến ./lib/node_modules/npm/bin/npm-cli.js. Đây là những gì gây ra lỗi trong thiết lập của tôi. Nếu bạn gọi npm, thông thường nó sẽ tìm thấy nó đang tìm kiếm nó trong các thư mục được liệt kê trong PATHvar env. Nó có thể ví dụ được đặt tại ./bin. Tuy nhiên, npmtrong một ./binthư mục chỉ nên là một liên kết tượng trưng cho những điều đã nói ở trên ./lib/node_modules/npm/bin/npm-cli.js. Nếu nó không phải là một liên kết tượng trưng nhưng trực tiếp chứa mã, thì ở đâu đó trong quá trình cài đặt, liên kết tượng trưng đã được thay thế bằng tệp mà nó liên kết đến. Trong trường hợp này, nó là đủ để tạo lại liên kết tượng trưng:cd ./bin; rm npm; ln -s npm ./lib/node_modules/npm/bin/npm-cli.js

Tất cả các câu trả lời đề nghị kiểm tra NODE_PATHhoặc npmrccấu hình nên được bỏ qua, vì những điều này không được xem xét khi tìm kiếm các mô-đun tương đối.


1

Tôi đã gặp lỗi này bằng cách trộn các phương thức cài đặt / cập nhật: nút được cài đặt thông qua gói tải xuống từ trang web và sau đó tôi đã sử dụng brew để cập nhật.

Tôi đã sửa bằng cách gỡ cài đặt phiên bản brew:

brew gỡ bỏ - nút phụ thuộc vào nút

Sau đó, tôi quay lại trang web nút và tải xuống và cài đặt thông qua trình quản lý gói: https://nodejs.org/en/doad/ Vì một số lý do, không có số lượng cố gắng cài đặt lại thông qua brew hoạt động.


0

Trong trường hợp của tôi, nó bị thiếu $ NODE_PATH:

NODE="/home/ubuntu/local/node" #here your user account after home
NODE_PATH="/usr/local/lib/node_modules" 
PATH="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$NODE/bin:$NODE/lib/node_modules"

Để kiểm tra chỉ echo $NODE_PATHcó nghĩa là nó không được đặt. Thêm chúng vào .bashrc được khuyến nghị.


0

Trên fedora 27 tôi đã giải quyết vấn đề bằng cách làm điều này:

sudo rm -f  /usr/local/lib/node_modules/npm
sudo dnf reinstall nodejs

0

Đây là một video và bài đăng blog hữu ích về việc loại bỏ nút khỏi hệ điều hành máy tính của bạn. Đây là một phương pháp loại bỏ khác nhau dựa trên cách bạn đã cài đặt nút ở vị trí đầu tiên (tệp so với tệp nhị phân được tải xuống từ https://nodejs.org/en/

  • nếu bạn đã cài đặt nút với Homebrew thì nút gỡ cài đặt sẽ hoạt động. Xác minh rằng với việc chạy một node -vlệnh trong thiết bị đầu cuối của bạn.

  • Mặt khác và nếu bạn đã cài đặt tệp nhị phân từ trang web của nodeJS thì bạn phải chạy lệnh này trong thiết bị đầu cuối của mình : sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}. Một lần nữa, xác minh rằng với việc chạy lệnh -v nút.

  • Trong cả hai trường hợp, việc loại bỏ nút thành công sẽ dẫn đến bash không nhận ra nút nào nếu nó bị xóa hoàn toàn


2
Liên kết đến một giải pháp được hoan nghênh để hỗ trợ câu trả lời, nhưng câu trả lời bạn đăng phải hoàn toàn khép kín, tức là không yêu cầu khách truy cập nhấp qua trang web khác có thể chứa nội dung bất ngờ hoặc độc hại hoặc không còn tồn tại.
tripleee


0

Điều này có thể xảy ra khi npm/libthư mục bị trống vì một số lý do (cũng có thể xảy ra do vấn đề cấp phép trong lần sử dụng cuối cùng).

Việc cài đặt lại nút có thể giải quyết vấn đề (như đã nêu trong các câu trả lời khác ở đây), nhưng tôi khuyên bạn nên sử dụng một công cụ tuyệt vời có tên nvm(Trình quản lý phiên bản nút), có thể quản lý nhiều phiên bản nodenpm- điều này chủ yếu hữu ích trên các máy dev với nhiều hơn một dự án yêu cầu các phiên bản khác nhau của nút.

Khi bạn cài đặt nvm , thông báo này sẽ biến mất và bạn sẽ có phiên bản mới nhất nodenpmđể sử dụng.

Để xem danh sách các phiên bản nút hiện được cài đặt trong nvm của bạn, chỉ cần chạy:

nvm list

Để cài đặt và sử dụng phiên bản nút mới, hãy chạy:

nvm install <node_version>

Ví dụ: để cài đặt phiên bản mới nhất của nút 10.x, hãy chạy:

nvm install 10

Để chuyển sang phiên bản hiện được cài đặt, hãy chạy:

nvm use <node_version>

Để chuyển sang phiên bản nút gốc của hệ thống, chỉ cần chạy:

nvm use system

Hi vọng điêu nay co ich.

Chúc may mắ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.