问题描述
我正在尝试使用一些 NPM 库(例如 sqlite3 和 express)构建 Web 扩展。
我使用 browserify 生成了一个包脚本并在脚本标签中需要它,但是当我打开扩展程序时,它显示一条错误消息,说 http.ServerResponse is undefined
(用于 express)和
stream is undefined
(对于 sqlite3)
manifest.json:
{
"manifest_version": 2,"name": "jpfShortener","version": "1.0","browser_action": {
"default_title": "jpfShortener","default_popup": "menu/jpfShortener.html"
},"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'","icons": {
"48": "icons/48.png"
},"permissions": [
"<all_urls>"
],"content_scripts": [
{
"js": ["menu/jpfShortener.js"],"matches": ["<all_urls>"]
}
]
}
html 的头部:
<head>
<Meta charset="UTF-8">
<Meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>jpfShortener</title>
<link rel="stylesheet" href="jpfShortener.css"/>
<script src="../bundleScripts/bundle.js" defer></script>
<script src="../server.js" defer></script>
<script src="../short.js" defer></script>
</head>
short.js:
document.getElementById("shortbtn").onclick = function() {short()};
function short() {
var data = { url: document.getElementById("url").value };
fetch("/addLink",{
method: "POST",body: JSON.stringify(data),headers: { "Content-Type": "application/json" }
})
.then(res => res.json())
.then(res => {
console.log(JSON.stringify(res));
})
.catch(err => console.log(err));
document.getElementById("url").value = "";
document.getElementById("url").focus();
};
server.js:
onload = function(){
console.log("teseeeete");
const bodyParser = require("body-parser");
const express = require("express");
const fs = require("fs");
const sqlite3 = require("sqlite3").verbose();
var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var listener = app.listen("8080",() => {
console.log(`Your app is listening on port ${listener.address().port}`);
});
const dbFile = "data/jpfshortener.db";
const exists = fs.readFileSync(dbFile);
const db = new sqlite3.Database(dbFile);
...
app.post("/addLink",(req,res) => {
//some code
});
...
};
我还尝试捆绑我的 server.js
并将其添加到 content_scripts
,但没有成功。
另外,我无法获取“/addLink”,它找不到网址。我相信这是因为 mozilla 和 google 临时网络扩展的服务不像本地主机那样像服务器一样工作。
作为一个普通的节点应用,它运行得很好。
有什么想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)