TLDR: Gỡ cài đặt gói toàn cầu bằng cách sử dụng npm uninstall -g create-react-app
và tạo các ứng dụng phản ứng mới bằng cách sử dụng npx create-react-app app
.
Vấn đề
Bạn đang sử dụng phiên bản cũ hơn create-react-app
mà bạn đã cài đặt trên toàn cầu bằng cách sử dụng npm. Các create-react-app
lệnh gọi gói toàn cầu này.
Bạn có thể đã xác nhận rằng bạn đang sử dụng một phiên bản lỗi thời bằng cách chạy npm outdated -g create-react-app
hoặc so sánh create-react-app --version
với npm view create-react-app
.
Thực tế là phiên bản react-scripts
cập nhật, không liên quan gì đến phiên bản của gói đang khởi động ứng dụng ( create-react-app
), lấy phiên bản mới nhất của các gói mà nó sử dụng ( react-scripts
trong trường hợp này).
Giải pháp
Nếu bạn muốn tiếp tục sử dụng create-react-app
lệnh, bạn sẽ cần cập nhật gói toàn cầu bằng cách sử dụng npm update -g create-react-app
. Lưu ý rằng bạn sẽ muốn làm điều này định kỳ để cập nhật nó. Bạn sẽ nhận thấy rằng create-react-app
không khuyến nghị điều này (lưu ý trong nhật ký từ cài đặt của bạn).
Một cách tiếp cận tốt hơn sẽ là xóa toàn bộ cài đặt toàn cầu ( npm uninstall -g create-react-app
) và thay vào đó sử dụng npx
để nó lấy phiên bản mới nhất của gói mỗi lần (chi tiết hơn ở npx
bên dưới).
Bạn nên xác nhận rằng nó đã được gỡ cài đặt trên toàn cầu bằng cách thử sử dụng create-react-app
để đảm bảo lệnh "không được tìm thấy".
Các vấn đề với gỡ cài đặt?
Bạn có thể gỡ lỗi nơi nó được cài đặt bằng cách sử dụng which create-react-app
. Nếu bạn gặp sự cố khi gỡ cài đặt nó, bạn có thể có nhiều phiên bản nút / npm trên máy của mình (từ nhiều lần cài đặt hoặc do bạn sử dụng trình quản lý phiên bản nút như nvm
). Đây là một vấn đề riêng tôi sẽ không giải quyết ở đây, nhưng có một số thông tin trong câu trả lời này .
Một cách tiếp cận hạt nhân nhanh chóng sẽ là loại bỏ mạnh mẽ nó ( rm -rf
) tại đường dẫn which create-react-app
trở lại.
Phần bổ sung
Gói npm toàn cầu và npx
lệnh
$ NPM_PACKAGE_NAME
sẽ luôn sử dụng phiên bản được cài đặt toàn cầu của gói, bất kể bạn đang ở trong thư mục nào.
$ npx NPM_PACKAGE_NAME
sẽ sử dụng phiên bản đầu tiên của gói mà nó tìm thấy khi tìm kiếm từ thư mục hiện tại đến thư mục gốc:
- Nếu bạn có gói trong thư mục hiện tại của bạn, nó sẽ sử dụng nó.
- Khác nếu bạn có gói trong một thư mục là cha mẹ của thư mục hiện tại của bạn, nó sẽ sử dụng gói đầu tiên mà nó tìm thấy.
- Khác nếu bạn đã cài đặt gói trên toàn cầu, nó sẽ sử dụng gói đó.
- Khác nếu bạn không có gói nào cả, nó sẽ tạm thời cài đặt nó, sử dụng nó và sau đó loại bỏ nó. - đây là cách tốt nhất để đảm bảo gói được cập nhật .
Thông tin thêm về npx có thể được tìm thấy trong câu trả lời này .
Sử dụng npx
vớicreate-react-app
create-react-app
có một số lệnh / bí danh đặc biệt để tạo một ứng dụng phản ứng (thay vì npx
) dành riêng cho gói đó ( yarn create react-app
, npm init react-app
), nhưng npx create-react-app
sẽ hoạt động giống như với các gói khác.
yarn
so với npm
cài đặt toàn cầu
Sợi lưu trữ các cài đặt toàn cầu trong một thư mục khác npm
, đó là lý do tại sao yarn create react-app
sẽ hoạt động ngay lập tức mà không cần gỡ cài đặt gói npm toàn cầu (theo như liên quan đến sợi, gói chưa được cài đặt).
Tuy nhiên, đây chỉ là một giải pháp tạm thời, vì bạn sẽ cần phải luôn luôn sử dụng sợi thay vì npm khi sử dụng Tạo ứng dụng.