[Flutter] Build Error: Type 'PromiseJsImpl' not found - firebase_messaging_web

Minji Jeong·2025년 2월 16일
0

Troubleshooting

목록 보기
23/23
post-thumbnail

문제 상황

../.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.18/lib/src/interop/messaging_interop.dart:18:10:
Error: Type 'PromiseJsImpl' not found.

CI 서버에서 아래 명령어로 플러터 프로젝트를 빌드할 때, 위와 같은 이슈가 지속적으로 발생했습니다. firebase_messaging_web 3.5.18 버전에서 이슈가 발생하는 것 같았으며, 로컬 빌드에서는 문제가 발생하지 않았습니다.

flutter build web --release # 배포용 웹앱 빌드 시 사용

참고로 firebase_messaging_webfirebase_messaging 에서 참조하고 있으며, 제가 작업중인 프로젝트는 firebase_messaging 14.9.4 버전을 사용하고 있었습니다.

커맨드로 앱을 빌드할 때 마지막에 -v 옵션을 주고, 빌드 시 출력되는 로그를 확인했습니다. 플러터는 빌드 시 필요한 플러그인들을 .pub-cache/hosted/pub.dev 에서 가져오는데요, 로컬에서 빌드할 때와 CI 서버에서 빌드할 때 가져오는 플러그인의 버전이 서로 달랐습니다.

.pub-cache

  • 플러터 또는 다트 프로젝트의 패키지 정보들이 저장되는 폴더로, 프로젝트 빌드 시 빌드 속도를 높이고 불필요한 다운로드를 방지하기 위해 해당 폴더에 캐싱된 패키지들을 재사용하여 빌드합니다.
flutter build web --release -v

Local Build

[   +1 ms] Found plugin 
firebase_messaging at /../../.pub-cache/hosted/pub.dev/firebase_messaging-14.9.4/
[   +1 ms] Found plugin 
firebase_messaging_web at /../../.pub-cache/hosted/pub.dev/firebase_messaging_web-3.8.7/

CI Build

[   +1 ms] Found plugin 
firebase_messaging at /../../.pub-cache/hosted/pub.dev/firebase_messaging-14.7.10/
[        ] Found plugin 
firebase_messaging_web at /../../.pub-cache/hosted/pub.dev/firebase_messaging_web-3.5.18/

CI 서버에서는 이슈가 발생하고 있는 firebase_messaging_web 3.5.18 버전을 사용하고 있지만, 로컬 빌드에서는 firebase_messaging_web 3.8.7 버전을 사용하고 있었습니다.

결론

pubspec.yml에 정의된 firebase_messaging의 버전을 로컬 환경에 맞춰 수정하였습니다. 각각의 환경에서 동일한 pubspec.yml을 참조하여 패키지 의존성을 가져올거라고 생각했는데, 아무래도 빌드 환경이 내부적으로 조금 달라서 서로 다른 버전의 플러그인을 사용한 것 같습니다.

firebase_messaging: ^14.9.4

깃허브에 올라온 관련 이슈 - Error: Type 'PromiseJsImpl' not found. #160821

References

Flutter Dev - Building the app for release

profile
Software Engineer

0개의 댓글