Câu lệnh import TypeScript không tìm thấy module Firebase trong dự án Expo
Tôi đang bắt đầu một dự án Expo hoàn toàn mới và theo tất cả các tài liệu được xuất bản vào ngày 28 tháng 8 năm 2021. Câu lệnh import được chỉ định bởi tài liệu của Firebase không hoạt động. Dưới đây là các bước để tái tạo.
expo init firebase-demo
Chọn blank (TypeScript) và nhấn enter.
cd firebase-demo
expo install firebase
Thêm dòng này vào App.tsx, như tài liệu hướng dẫn nói:
import { getAuth, createUserWithEmailAndPassword } from "firebase/auth";
Và bạn nhận được lỗi này: Module '"firebase/auth"' không có thành viên xuất khẩu 'getAuth'.
Một gợi ý về những gì đang xảy ra sai là trong VS Code, nếu tôi nhấn lệnh-click vào "firebase/auth", nó sẽ mở node_modules/firebase/empty-import.d.ts với toàn bộ nội dung như sau:
declare namespace empty {}
export = empty;
Có một thư mục node_modules/firebase/auth. Tại sao câu lệnh import lại không tìm thấy thư mục đó?
Đây là tsconfig.json của tôi, mà tôi chưa chỉnh sửa gì từ những gì expo init tạo ra:
{
"extends": "expo/tsconfig.base",
"compilerOptions": {
"strict": true
}
}
Câu trả lời #1
Tôi đã gặp phải cùng một vấn đề. Giải pháp của tôi là:
thêm: "exclude": ["node_modules", "node_modules/**/*"] vào jsconfig.json của bạn và sau đó Ctrl+Shift+P -> Tải lại cửa sổ
Một giải pháp khác mà tôi gặp phải:
làm tương tự, nhưng xóa thư mục node_modules khỏi dự án của bạn trước khi chỉnh sửa jsconfig.json và chạy npm install ngay sau Ctrl+Shift+P -> Reload Window
Câu trả lời #2
Tôi đã khắc phục vấn đề này bằng cách nâng cấp Firebase lên phiên bản 9.0.0. Vấn đề dường như được gây ra bởi thực tế là expo install firebase đã cài đặt một phiên bản khá cũ - 8.2.3, cách đây 7 tháng. Phiên bản hiện tại là 9.0.0, và tài liệu hiện tại có lẽ là dành cho phiên bản đó. Tôi sẽ tiếp tục thận trọng vì 9.0.0 chưa được chứng nhận để sử dụng với Expo. (Tôi đoán một giải pháp khả thi khác là tìm tài liệu cho phiên bản 8.2.3).