firebase / firebase/firebase-admin-node

Storage `bucket.exists()` always returns false for firebase emulator

Open
#2,447 0 comments 1 reaction 0 assignees View on GitHub
api: storage
Dominant language
TypeScript
Stars
1.7k
Forks
419
Avg merge
3d 10h
Merged PRs (30d)
16

Description

### [READ] Step 1: Are you in the right place?

* For issues related to __the code in this repository__ file a Github issue.
* If the issue pertains to Cloud Firestore, read the instructions in the "Firestore issue"
template.
* For general technical questions, post a question on [StackOverflow](http://stackoverflow.com/)
with the firebase tag.
* For general Firebase discussion, use the [firebase-talk](https://groups.google.com/forum/#!forum/firebase-talk)
google group.
* For help troubleshooting your application that does not fall under one
of the above categories, reach out to the personalized
[Firebase support channel](https://firebase.google.com/support/).

### [REQUIRED] Step 2: Describe your environment

* Operating System version: Ubuntu
* Firebase SDK version: firebase-admin@12.0.0 firebase-tools@13.1.0
* Firebase Product: storage
* Node.js version: 18.16.1
* NPM version: 9.5.1

### [REQUIRED] Step 3: Describe the problem

#### Steps to reproduce:

Create basic project with storage and functions setup for emulation: (functions only used to call storage bucket methods)
```json
// firebase.json
"emulators": {
"functions": {
"port": 5001
},
"storage": {
"port": 9199
},
// ...rest of config
```
Run emulator with `firebase emulators:start --only storage,functions`
Verify storage bucket exists in emulator and the name is matched in firebase config showing `storage_bucket` as the default
Hit the firebase function to run the storage bucket code
Calling `bucket.exists()` from firebase function _always_ returns false.

**Expected outcome:**
Calling `bucket.exists()` from firebase function return `true` when accessing the default bucket.

#### Relevant Code:

```ts
import { onRequest } from 'firebase-functions/v2/https';
import { getStorage } from 'firebase-admin/storage';

export const foo = onRequest(async (req, res) => {
const storage = getStorage();
console.log('APP STORAGE BUCKET:', storage.app.options.storageBucket);

const bucket = storage.bucket();
console.log('DEFAULT STORAGE BUCKET:', `name=${bucket.name}`, `id=${bucket.id}`);

const exists = await bucket.exists();
console.log('BUCKET EXISTS?:', exists);

res.send(`BUCKET EXISTS?: ${exists}`);
});
```

#### Images

Console output:
![image](https://github.com/firebase/firebase-admin-node/assets/625203/f7878cfa-1f10-4f13-9cf8-38e3751802db)

Emulator Storage: (name of bucket matches id in code)
![image](https://github.com/firebase/firebase-admin-node/assets/625203/231ab666-a54e-40f0-99d7-cb64238e2d94)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.