LoginSignup
0
0

More than 1 year has passed since last update.

【@firebase/rules-unit-testingを使おうとしたら、Cannot find module 'firebase/compat/~' エラーが出た。解決法】

Last updated at Posted at 2021-11-02

firestoreのテストをしようとしていたときに遭遇したエラーの解決方法です。

Cannot find module 'firebase/compat/database' from 'node_modules/@firebase/rules-unit-testing/dist/index.cjs.js'

【解決した方法】
エラーにもある'node_modules/@firebase/rules-unit-testing/dist/index.cjs.js' 内のcompatモジュールを挟み込んでいるrequireを修正。

// ・・・

// firebaseV9対応問題を後回しにして、testが通るように修正したcode
require('firebase/database');
require('firebase/firestore');
require('firebase/storage');
var fetch = require('node-fetch');
var firebase = require('firebase/app');

// もともとのfirebaseV9に対応させるように互換性をもたせていたcode
// require('firebase/compat/database');
// require('firebase/compat/firestore');
// require('firebase/compat/storage');
// var fetch = require('node-fetch');
// var firebase = require('firebase/compat/app');

//・・・

【予想される原因】

もともとfirebaseはバージョン8で利用していた。

その後firebaseバージョン9がリリースされた。

その後、@firebase/rules-unit-testingのバージョンが2系に上がり、firebaseバージョン9互換のcodeになっていたが、もともとバージョン8を使っていたため互換性を持たせるためのcompatライブラリがinstallされておらず、エラーが出た。

compatライブラリとは?

version9に対応するための互換ライブラリ
Upgrade from version 8 to the modular Web SDK | Firebase Documentation

現在FirebaseWeb SDKバージョン8以前を使用しているアプリは、このガイドの手順を使用してバージョン9への移行を検討する必要があります。

バージョン9への移行を徐々に実施するためのライブラリ。

使い方としては、バージョン8のアプリをcompatライブラリで書き換えていき、バージョン9と共存させる。最終的にmodular を使うように更新していく。

firebaseのバージョンを9に上げた際にコメントアウトしたところは戻すことになりそうだ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0