我尝试在firebase存储上传文件(图片)。但是它控制了一个错误,说明"未捕获的错误:Firebase选项中没有定义存储桶。" 。这是我的代码
const fileUpBtn = document.getElementById('photoUpload');
const selectFile = document.getElementById('selectedFile');
const postIt = document.getElementById('postIt');
fileUpBtn.addEventListener('click',function(){
selectFile.click();
}
);
selectFile.addEventListener('change',function(e){
var file=e.target.files[0];
var filename = file.name;
console.log('/postPic/'+filename);
var storeLocation = storage.ref('/postPic/'+filename);
var uploadTask=storeLocation.put(file);
});
我试过允许任何用户存储,但这种情况也可以解决这个错误。
答案 0 :(得分:21)
很可能是" storageBucket" Firebase配置中的选项是空字符串。它似乎默认为空字符串,除非"存储"已在控制台界面初始化。
转到firebase控制台,初始化"存储"通过在Firebase控制台界面上访问它,然后复制" storageBucket"的新值。从firebase配置到你的应用程序。
你的firebase配置应该是这样的。
{
apiKey: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
authDomain: "my-app-a123z.firebaseapp.com",
databaseURL: "https://my-app-a123z.firebaseio.com",
projectId: "my-app-a123z",
storageBucket: "my-app-a123z.appspot.com",
messagingSenderId: "123456789012"
};
答案 1 :(得分:1)
如果您在角度问题上遇到此问题。您必须在enviroment.prod.ts上指定storageBucket
链接。由于部署项目时,它将使用生产变量和文件。
export const environment = {
production: true,
firebaseConfig : {
apiKey: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
authDomain: "your-app_name.firebaseapp.com",
databaseURL: "https://your-app_name.firebaseio.com",
projectId: "your-app_name",
storageBucket: "gs://your-app_name.appspot.com/", //REMEMBER TO ADD IT HERE
messagingSenderId: "604005378047",
appId: "1:604005378047:web:ab0cdef3gh123456"
}};