我一直在尝试使用SvelteKit为我的网站创建ServiceWorker,但是我遇到了一个问题。我创建了一个文件/src/service-worker.ts
,并在其中放置了以下代码:
import { build, files, prerendered, version } from '$service-worker';
const applicationCache = `applicationCache-v${version}`;
const staticCache = `staticCache-v${version}`;
const returnSSRpage = (path) =>
caches.open("ssrCache").then((cache) => cache.match(path));
// Caches the svelte app (not the data)
self.addEventListener("install", (event) => {
event.waitUntil(
Promise.all([
caches
.open("ssrCache")
.then((cache) => cache.addAll(["/"])),
caches
.open(applicationCache)
.then((cache) => cache.addAll(build)),
caches
.open(staticCache)
.then((cache) => cache.addAll(files))
])
.then(self.skipWaiting()),
)
})
... reduced code
运行
npm run build
时,代码可以完全编译,且在浏览器中运行。然而,我的VSCode智能感知出了一些问题。尤其是它说event
的waitUntil
属性不存在。Property 'waitUntil' does not exist on type 'Event'.ts(2339)
其他错误包括:Property 'skipWaiting' does not exist on type 'Window & typeof globalThis'.ts(2339)
和 Cannot find name 'clients'.ts(2304)
。现在,我对JavaScript和TypeScript还不太熟悉,但根据我的经验,智能感知不应该输出在编译过程中未出现的错误。为什么会出现这种情况?
我不确定需要提供哪些信息。我的TS版本是4.7.4,这也是VSCode用于智能感知的版本。我已安装JS和TS的ESLint扩展。
这里可能存在什么问题呢? 谢谢!
waitUntil
只需要一个参数,超出第一个参数的任何内容将在运行时被忽略。 - H.B..then(self.skipWaiting()),
。虽然对我来说这不会出错,但你是否使用了类似ESLint的工具?它可能会将其视为额外的参数。 - Keith