带有 Firebase 的 Chrome 扩展程序中 tabs.url 的数据类型会引发错误
Datatype of tabs.url in Chrome Extension with Firebase throws error
我正在尝试编写一个从chrome扩展程序到Firebase数据库的标签网址。但是,FB 抛出一个错误,即:
extensions::uncaught_exception_handler:8 响应 tabs.query 时出错: 错误:Firebase.update 失败:第一个参数在路径/user-posts/[object MouseEvent]/-KM8uJZHiNsgtQbNh13I 中包含无效键([对象 MouseEvent])。键必须是非空字符串,并且不能包含"."、"#"、"$"、"/"、"["或"]"
我的弹出窗口中的相应代码.js:
function writeNewPost(uid) {
chrome.tabs.query({currentWindow: true, active: true}, function (tabs) {
var urlvar = tabs[0].url;
var postData = {
uid: uid,
url: urlvar
};
var newPostKey = firebase.database().ref().child('posts').push().key;
var updates = {};
updates['/posts/' + newPostKey] = postData;
updates['/user-posts/' + uid + '/' + newPostKey] = postData;
return firebase.database().ref().update(updates);
});
};
那么它是否因为 url 包含禁止的字符而抱怨?必须以某种方式转换它,以便将其写入数据库。
该函数通过以下方式调用:
document.addEventListener("DOMContentLoaded", function() {
document.getElementById('clickme').addEventListener('click', writeNewPost);
});
uid 来自后台.js,用于处理登录。
var uid = firebase.auth().currentUser.uid;
它确实返回了一些东西。让我烦恼的是,我的弹出窗口中的同一行.js返回 null。
好吧,有问题的部分是uid
的,与chrome.tabs
API 调用无关 - 它来自外部
看起来您将writeNewPost
设置为鼠标单击的处理程序 - 因此它被传递了一个MouseEvent
事件对象作为其第一个参数。这就是你的错误所在。
将所有
Firebase 操作集中在后台页面上下文中可能是最有意义的 - 因此,与其尝试直接调用它,不如将消息传递到后台以为您执行操作 - 因为否则您有 2 个 Firebase API 实例,您需要在这两个实例中进行身份验证。
问题是在我的弹出窗口.js开头的firebase.initializeApp()期间uid为空。在上面的函数中调用 firebase.auth().currentUser.uid 会返回实际的 uid:
function writeNewPost() {
chrome.tabs.query({currentWindow: true, active: true}, function (tabs) {
var urlvar = tabs[0].url;
var uid = firebase.auth().currentUser.uid; //This
var postData = {
uid: uid,
url: urlvar
};
var newPostKey = firebase.database().ref().child('posts').push().key;
var updates = {};
updates['/posts/' + newPostKey] = postData;
updates['/user-posts/' + uid + '/' + newPostKey] = postData;
return firebase.database().ref().update(updates);
});
};
- 谷歌图表 - 地理图表“不兼容的数据表:错误:未知地址类型
- 数据表未捕获类型错误
- 从 json 动态获取数据时出现类型错误
- 谷歌地图数据类型抛出类型错误:can't将未定义转换为对象
- 无效的“in”操作数 obj JQUERY - 尝试从 JSON 获取数据时出现类型错误
- 访问数据库数据类型错误
- AngularJS 2 - 内部属性数据绑定 - 异常:类型错误:无法读取未定义的属性
- D3 JS - 未捕获的类型错误:无法读取未定义的属性“长度” - 似乎与数据问题有关
- 数据表:未捕获类型错误:无法读取未定义的属性“按钮”
- 尝试复制 json 数据 js 时出现类型错误
- 未捕获的类型错误:发送数据时非法调用
- 未捕获的类型错误:从 ajax 发送数据时出现非法调用错误
- 类型错误:加载数据为空
- Magento:无法运行数据流配置文件:Ajax 错误(未捕获的类型错误:e 不是函数)
- AJAX 在 GoDaddy 主机上出现数据类型 JSON 解析错误
- Youtube数据API-未压缩类型错误:无法读取属性'搜索'的未定义
- 未捕获的类型错误和已修复的数据表
- Ember数据-类型错误:对象没有方法'每个关系'
- Parsley.js数据类型错误
- ChartRangeSlider -给定轴上的所有序列必须具有相同的数据类型-错误