Node.js 服务工作者不能使用nodejs服务器在脱机模式下运行

Node.js 服务工作者不能使用nodejs服务器在脱机模式下运行,node.js,service-worker,progressive-web-apps,Node.js,Service Worker,Progressive Web Apps,我一直在创建新的项目PWA。 当我开发时,没有使用node js for(socket.io running),而是像我预期和需要的那样离线运行 但是当与nodejs服务器集成时。上网时,应用程序运行良好,不会出现任何问题。但当我切换到脱机模式时,我的服务工作不会运行,而是显示脱机浏览器 这是我的代码节点js服务器: var express=require('express'); var-app=express(); var server=require('http')。服务器(应用程序);

我一直在创建新的项目PWA。 当我开发时,没有使用node js for(socket.io running),而是像我预期和需要的那样离线运行

但是当与nodejs服务器集成时。上网时,应用程序运行良好,不会出现任何问题。但当我切换到脱机模式时,我的服务工作不会运行,而是显示脱机浏览器

这是我的代码节点js服务器:

var express=require('express');
var-app=express();
var server=require('http')。服务器(应用程序);
var io=require('socket.io')(服务器);
var cors=要求(“cors”);
应用程序使用(cors());
应用程序使用(express.static(u dirname+'/');
应用程序使用(功能(请求、恢复、下一步){
res.header('Access-Control-Allow-Origin','*');
res.header('Access-Control-Allow-Methods','GET、PUT、POST、DELETE');
res.header('Access-Control-Allow-Headers','Content-Type');
next();
});
io.on('连接',函数(套接字){
console.log(“新连接”);
socket.on('afterBid',函数(数据){
io.emit('bcCurrentBid'{
当前竞价:data.auction\u当前竞价,
以用户id为主:data.user\u id\u为主
});
});
});
listen(9991,函数(){
log('server up and running at 2205 port');

});服务工作者只是从Web服务器提供的javascript文件。不管它是否是node.js

您是否已检查chrome调试工具中的“应用程序”选项卡以查看是否已加载服务工作者?如果是,请共享“service worker.js”文件的代码。 您还可以在注册服务人员时添加“catch”部分。这可能会向您显示如果无法加载服务工作人员会发生什么

window.addEventListener('load',function(){
navigator.serviceWorker
.register('./service worker.js')
.then(function(){console.log('Service Worker Registered');})
.catch(函数(err){
console.log('ServiceWorker注册失败:',错误);
});

});我在这里发布了一个类似的问题,并得到了答案:

简而言之,请记住服务人员的范围是其自己的目录和下面的文件夹。。。它无法访问您的库或应用程序目录


更详细地说,这意味着如果您的内容从
https://example.com/
,您的服务人员必须住在
https://example.com/service-worker.js
。如果您将其设置为
https://example.com/js/service-worker.js

如果看不到您的
服务人员.js的内容,很难给出太多反馈。一条一般性建议是,服务人员不能拦截WebSocket API请求/响应,即它将无法处理您的socket.io流量。@JeffPosnick,但服务人员和nodejs服务器可以同时运行吗?。。我只需要运行我的node js服务器,当离线模式下service worker能够从缓存中显示应用程序时,我编辑了我的问题并添加了我的service-worker.js文件。我遇到的问题是。。当我在没有nodejs的情况下运行时,我的应用程序可以在带有service worker@Sorskoot的脱机模式下运行