20/09/2018, 09:40

Tổng hợp các lỗi và cách fix trên React Native

Chào các tín đồ của React Native nói tiêng cũng như các bạn đang chuẩn bị nhập môn RN và đang chuẩn bị bỏ cuộc chỉ vì cái màn hình này Màn hình này thật tế nó cũng đáng sợ như cái màn hình xanh lè của bên Windows nhưng được cái là nó “tử tế” hơn vì có chỉ dẫn cách fix. Dù ...

Chào các tín đồ của React Native nói tiêng cũng như các bạn đang chuẩn bị nhập môn RN và đang chuẩn bị bỏ cuộc chỉ vì cái màn hình này

Màn hình này thật tế nó cũng đáng sợ như cái màn hình xanh lè của bên Windows nhưng được cái là nó “tử tế” hơn vì có chỉ dẫn cách fix. Dù là có fix cũng như không !!!
Mình làm bài note này để tổng hợp các thể loại “đèn đỏ”, lỗi thường thấy trong RN và cách để fix chúng. Mục đích chính là để thông đường cho các anh em đang còn bị kẹt lại. Bài này để tiện mình chỉ show bên máy ảo iOS (đa số bị bên này):
Màn hình lỗi thần thánh của React Native

Lỗi syntax: Nhìn vào thấy ngay

Lỗi syntax tại file App.js line thứ 10
Lỗi này nhìn vào là thấy được ngay như hình mô tả, rất dễ. Đôi khi cái backtrack (các dòng show lỗi bên dưới) nó dài tới nỗi phải scroll mấy mét mới thấy được.

Thiếu Module: Install nhớ có “–save” nhé

Module redux không tìm thấy
Lỗi này thường bị khi chúng ta import sai. Có 3 nguyên nhân chính:
  1. Gõ sai chính tả tên package, hoặc hàm trong package.
  2. Module chưa được install vào node_modules: khi install thư viện các bạn nhớ dùng “–save” ở cuối để nó add vào file package.json. Rất có khả năng chúng ta phải xoá node_modules rồi npm install lại. Nếu không có --save là nó không kéo lib/package về.
  3. Module đã install, check trong thư mục node_modules thấy nhưng vẫn báo lỗi: tới đây hỏi tội thằng watchman, nó “watch” kiểu gì mà không detect được mình đã install. Trường hợp này các bạn follow theo các bước của màn hình đỏ là ok. Ngoài ra mình tặng các bạn thêm 1 số câu lệnh để clear cache nữa:

Lỗi chưa chạy package server hoặc server đã ngủm

Nhiều bạn mới học RN không để ý là khi react native nó run vào máy ảo thì nó cần 1 con server chạy lên trước (package server). Con server này sẽ đóng gói cho mình cái file bundle js đẩy vào máy ảo. Ngoài ra nó cũng phải sống để mình reload máy ảo (ko cần build lại) nó sẽ làm lại thao tác trên. Mọi ma thuật đều có cơ chế của nó, cơ chế hỏng thì ma thuật hết phép.
Cách fix: chạy lại với lệnh npm start hoặc npm start -- --reset-cache.
Chỗ này các bạn lưu nếu bị lỗi như hình sau:
Port 8081 đang bị chiếm dụng, các bạn tiếp tục sửa theo hướng dẫn là OK. Ví dụ như sau:
Kill 2 process chiếm port là ok
Trường hợp OK là thế này:

Lỗi CFBundleIdentifer: người vô tội phải hứng hết tội lỗi. Tương tự lỗi trên RN >= 0.45

CFBundleIdentifer nó có tội gì đâu
Mình khẳng định CFBundleIdentifer vô tội trong vụ này. Ai đi mở cái CFBundleIdentifer trong XCode sửa là tới mùa quýt không fix được
0