我目前正在使用Capacitor制作应用程序,因为它使用内部https服务器而不是文件协议来将文件提供给WebView,这应该允许我使用服务人员,但可悲的是,事实似乎并非如此据我了解,我想做的所有事情都在规范范围内。
主脚本代码:
navigator.serviceWorker.register('sw.js');
Run Code Online (Sandbox Code Playgroud)
服务人员代码:
console.log("I'm a service worker");
Run Code Online (Sandbox Code Playgroud)
我得到了什么
提取脚本时发生未知错误。无法加载资源:net :: ERR_CONNECTION_REFUSED localhost /:1未捕获(承诺)TypeError:无法注册ServiceWorker:提取脚本时发生未知错误。
我希望得到什么
我是服务员
另一方面,当我尝试以完全相同的请求获取服务人员时,它可以正常工作。
码:
fetch("https://localhost:4634/sw.js", {
"credentials":"omit",
"headers": {},
"referrer":"https://localhost:4634/sw.js",
"referrerPolicy":"no-referrer-when-downgrade",
"body":null,
"method":"GET",
"mode":"cors"
}).then(res => {
return res.text();
}).then(text => {
console.log(text);
});
Run Code Online (Sandbox Code Playgroud)
我得到的是:
console.log("I'm a service worker");
Run Code Online (Sandbox Code Playgroud)
如果有人知道我在做什么错,或者仍然不合规格,请告诉我
我目前正在开发一个聚合物 3 项目,其中一个组件需要导入 socket.io-client,但无论我尝试什么,我都无法让它工作。
我试过了:
import io from 'socket.io-client';
Run Code Online (Sandbox Code Playgroud)
我得到什么:
未捕获的语法错误:请求的模块“../../node_modules/socket.io-client/lib/index.js”不提供名为“default”的导出
同样的:
import io from 'socket.io-client/dist/socket.io.js';
Run Code Online (Sandbox Code Playgroud)
我得到什么:
未捕获的语法错误:请求的模块“../../node_modules/socket.io-client/dist/socket.io.js”不提供名为“default”的导出
我也试过这个:
import * as io from 'socket.io-client'
Run Code Online (Sandbox Code Playgroud)
我得到什么:
参考错误:在 index.js:4 中未定义要求
和这个:
import * as io from 'socket.io-client/dist/socket.io.js'
Run Code Online (Sandbox Code Playgroud)
我得到什么:
类型错误:无法读取未定义的属性“缓冲区”
后来我查看了 socket.io-client 的代码,代码中似乎没有使用任何 es6 导出,这可以解释为什么它确实不起作用。
我觉得奇怪的是,导入语法甚至列在他们的网站上作为支持。我想我可能使用了错误的构建或其他东西,但我不知道为什么会是这样,因为"socket.io-client": "^2.1.1"如果有人知道我做错了什么,我会很高兴听到。