BunからFirestoreにDocumentを追加しようと思ったらうまく動かなかった
ちょっとハマってしまったのでメモがてらに書きます。。
やりたかったこと
以下のようなFirestoreのあるCollectionにDocumentを追加するような処理を書いてました。
import { cert, initializeApp } from "firebase-admin/app";
import { getFirestore } from "firebase-admin/firestore";
...
const firebaseInit = () => {
const app = initializeApp({
credential: cert(process.env.GOOGLE_APPLICATION_CREDENTIALS!),
databaseURL: "https://*************.firebaseio.com",
});
return getFirestore(app);
};
export const generateTokenAsync = async () => {
const db = firebaseInit();
...
await db.collection("hoge_fuga_collection").add(record);
このファイルをbun ****.tsで実行しようとすると以下のようなエラーが出てしまった。
$ bun ****.ts
29 | const CALL_INVOCATION_TRANSFORMER_SYMBOL = Symbol();
30 | function isFunction(arg) {
31 | return typeof arg === 'function';
32 | }
33 | function getErrorStackString(error) {
34 | return error.stack.split('\n').slice(1).join('\n');
^
TypeError: undefined is not an object (evaluating 'error.stack.split')
at getErrorStackString (/mnt/d/*******/node_modules/@grpc/grpc-js/build/src/client.js:34:12)
at onReceiveStatus (/mnt/d/*******/node_modules/@grpc/grpc-js/build/src/client.js:191:41)
at onReceiveStatus (/mnt/d/*******/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:360:138)
at onReceiveStatus (/mnt/d/*******/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:323:178)
at /mnt/d/*******/node_modules/@grpc/grpc-js/build/src/resolving-call.js:94:75
at processTicksAndRejections (:61:77)
動作環境
$ bun --version
1.0.15
package.json
"dependencies": {
"firebase-admin": "^11.11.1",
...
}
Bun側の問題らしい
https://github.com/firebase/firebase-admin-node/issues/2300#issuecomment-1721340375
https://github.com/oven-sh/bun/issues/4746
↑ら辺のIssueにそれらしい記載があり、Bun側で対応中みたい。 公式では“Bun aims for complete Node.js API compatibility.“ということなので、対応に期待したいですね。