Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Service Worker安装失败:“;无法读取属性';添加所有未定义的“;_Javascript_Asp.net_Service Worker - Fatal编程技术网

Javascript Service Worker安装失败:“;无法读取属性';添加所有未定义的“;

Javascript Service Worker安装失败:“;无法读取属性';添加所有未定义的“;,javascript,asp.net,service-worker,Javascript,Asp.net,Service Worker,因此,我将保持简洁:当尝试安装时,我的服务人员失败了。这是我在sw.js中的所有代码: var cacheName = 'randomstring'; var filesToCache = [ '/' ]; self.addEventListener('install', function (e) { console.log('[ServiceWorker] Install'); e.waitUntil( caches.open(cacheName)

因此,我将保持简洁:当尝试安装时,我的服务人员失败了。这是我在
sw.js
中的所有代码:

var cacheName = 'randomstring';
var filesToCache = [ '/' ];

self.addEventListener('install', function (e) {
    console.log('[ServiceWorker] Install');
    e.waitUntil(
        caches.open(cacheName)
            .then(function (cache) {
                console.log('[ServiceWorker] About to fail');
                return cache.addAll(filesToCache);
            })
    );
});
我得到一个异常,因为
cache
undefined
(在
cache.addAll
位上)

不太清楚为什么会这样


我以前使用过服务人员,从未遇到过此问题。这是我第一次使用带有ASP.Net后端的服务人员,所以不确定这是否是问题所在?

因此,我找到了答案。我本来打算投票结束这个问题,但我想我还是把它留在这里,因为我看到其他一些人有这个问题,他们不知道如何解决这个问题。尽管它超级愚蠢:)(或者更准确地说,我是)

因此,我是通过“播放”按钮(又名“开始调试”)运行该网站的,在Visual Studio 2017中,该按钮会启动一个特殊的Chrome窗口,其中会抛出上述错误

为了解决这个问题,我可以(或者你也可以,未来的互联网旅行者)不需要调试就直接启动,在IIS中托管网站,等等


编辑:如果有更好的解决方法,我可以在调试模式下使用ServiceWorker,请提出建议,我会将其标记为答案。但是,对于我的特定问题,上面的解决方法很好:)。

遇到了相同的问题,并找到了一些其他方法

VS在调试时识别“chrome.exe”,并添加一些参数,这就是为什么服务人员无法工作的原因

有一个选项Debug=>option=>Debug=>General=>为asp.net(Chrome、Edge和FireFox)启用javascript调试。如果你不想在vs中使用js调试-就像我一样,因为我使用chrome进行js调试-只需停用此选项,服务人员就可以工作。

或者,您可以添加chrome作为新的“浏览器”,并切换浏览器进行调试。因为vs识别“chrome.exe”,通过管理命令行“mklink chromedirect.exe chrome.exe”创建符号链接,并将其添加为visual studio中的新浏览器

这可以在“播放”上下文菜单=>Browse with下完成。


只需添加chromedirect.exe,无需任何参数和友好的名称,如“Google Chrome Direct”。之后,您可以切换到浏览器并选择是否需要VS JS调试。

这个问题在这一点上已经很老了,但是如果其他人也遇到了这个问题,根本原因实际上是一个奇怪的Chrome bug(),如果启动Chrome时设置的--user data dir路径超过133个字符,缓存API就会停止工作。Visual Studio将其设置为一个自定义(且很长)路径,以便为您提供一个新的Chrome实例进行调试(例如,无需额外扩展、干净缓存等)。下面@Ceffis提到的解决方法(使用VS中的“浏览…”选项)应该可以很好地工作,直到Chrome错误得到修复。