2015-04-08 51 views
7

Khi sử dụng căn cứ hỏa lực trên ReactNative, nó sẽ hiển thị thông báo lỗi như:khách hàng căn cứ hỏa lực trên ReactNative

không thể tìm thấy quá trình biến

Tuy nhiên, nếu tôi yêu cầu firebase/lib/firebase-web.js bằng tay, nó sẽ hiển thị:

không thể tìm thấy tài liệu biến

Tôi có thể giải quyết vấn đề này bằng cách nào?

+0

Bạn có thể giải quyết bằng cách làm những gì Jason đã làm ở đây: https://github.com/badfortrains/wsExample Bạn có thể muốn làm theo cùng với các cuộc thảo luận ở đây: https : //groups.google.com/forum/#! topic/firebase-talk/aoPNvQQsVUE –

Trả lời

1

Chỉ cần tìm nó. Câu trả lời của Pavan rất hữu ích, nhưng nó không hoàn toàn đúng khi sử dụng với Firebase.

Đối với căn cứ hỏa lực, hãy làm theo các bước sau:

  1. Tải firebase-debug.js từ wsExample. Hoặc bạn chỉ có thể cài đặt wsExample bằng npm và yêu cầu firebase-debug.js bên trong nó.
  2. Sử dụng của badfortrains chia hai Phản ứng-Quê quán:

    "react-native": "git://github.com/badfortrains/react-native#WebSocket" 
    
  3. mới các căn cứ hỏa lực như thế này:

    var firebase = require("../../firebase-debug.js"); 
    var rootRef = new Firebase(Const.FB_ROOT); 
    

Mọi thứ chỉ nên làm việc bây giờ!

4

Tôi vừa trải qua cùng một vấn đề trong khi cố gắng sử dụng sockets.io trong ứng dụng gốc phản ứng của tôi để hy vọng tôi có thể trợ giúp.

Lý do bạn không thể sử dụng mô-đun nút của Firebase là do chưa có một tệp polyfill nào được tạo để hỗ trợ websockets (nền tảng firebase phụ thuộc vào) trong gốc phản ứng.

Nếu bạn xem qua issue #619 trong repo gốc của phản ứng, bạn sẽ tìm thấy cuộc thảo luận hiện tại về việc tạo một polyfill api websockets.

Cách chúng tôi giải quyết nó là sử dụng phiên bản sửa đổi của thư viện ổ cắm của Jason và tạo our own repo xung quanh tệp đó. Sau đó, chúng tôi đã thêm dòng bên dưới vào các gói phụ thuộc package.json của chúng tôi.

"react-sockets": "crewapp/react-native-sockets-io" 

enter image description here

Lý do mà phiên bản của tập tin khách hàng sockets.io Jason của công trình là vì phản ứng bản địa được thêm vào như một tác nhân người dùng. Bạn có thể tìm mã mà làm cho sự thay đổi này ở phía trên cùng của tập tin:

window.navigator = { 
    userAgent: "react-native" 
} 

Khi bạn đã trải qua các bước sau bạn sẽ có thể để yêu cầu sockets.io/firebase như bình thường.

+0

Vậy đây có phải là sử dụng firebase-web không? – lazywei

0

Tôi cũng gặp sự cố với socket.io trên React Native, giải pháp là nhận thông báo về dữ liệu mới và nếu dữ liệu đủ lớn - hãy tải xuống bằng yêu cầu RESTfull đơn giản. trong trường hợp dữ liệu của tôi đủ nhỏ để được gửi tất cả trong API thông báo.

Tôi đã sử dụng dịch vụ GCM để gửi thông báo đến điện thoại từ máy chủ nodejs. BTW, nó sử dụng ít pin sau đó kết nối ổ cắm và hoạt động tuyệt vời :)

Các vấn đề liên quan