ちょっとハマってしまったのでメモがてらに書きます。。
やりたかったこと
以下のような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側の問題らしい
↑ら辺のIssueにそれらしい記載があり、Bun側で対応中みたい。 公式では"Bun aims for complete Node.js API compatibility."ということなので、対応に期待したいですね。