全局模式与任何文件工作箱都不匹配

问题描述 投票:0回答:2

我正在尝试通过工作框4.3.1为Polymer 3生成服务工作者。

我想缓存的Bower和node_modules中有一些特定文件。

我尝试在globIgnores中添加“ en-in / node_modules / **”,并在globPattern中包含特定文件,例如-en-in/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.*.js。

我尝试的配置出现错误。我什至尝试添加globStrict:false。即使那样也没有帮助。

下面是我的工作箱配置:

    globDirectory: "dist",
    globPatterns: ["en-in/**/*.{js,json,css}",
        "en-in/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.*.js"],
    globIgnores: [
        "en-in/sw-reg.js",
        "en-in/sw-custom.js",
        "en-in/rev-manifest.json",
        "en-in/package.json",
        "en-in/workbox-v4.3.1/**/*",
        "en-in/node_modules/**"
    ],
    globStrict: false,

我收到以下错误:

One of the glob patterns doesn't match any files. Please remove or fix the following: 
{
  "globDirectory": "dist",
  "globPattern": "en-in/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.*.js",
  "globIgnores": [
    "en-in/sw-reg.js",
    "en-in/sw-custom.js",
    "en-in/rev-manifest.json",
    "en-in/package.json",
    "en-in/workbox-v4.3.1/**/*",
    "en-in/node_modules/**",
    "**/service-worker.js"
  ]
}
service-worker workbox polymer-3.x
2个回答
1
投票

在Workbox中进行球形化的code看起来像:

globbedFiles = glob.sync(globPattern, {
  cwd: globDirectory,
  follow: globFollow,
  ignore: globIgnores,
  strict: globStrict,
});

因为您以"en-in/node_modules/**"模式之一传递globIgnores,所以"en-in/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.*.js"永远不会匹配任何内容。在glob module中,glob始终优先。

您有多种方法可以解决此问题:

  • 作为构建过程的一部分,将ignore文件从custom-elements-es5-adapter.*.js中移出到另一个目录,然后从那里加载它。
  • node_modules中的"en-in/**/*.{js,json,css}"更改为globPatterns,以使其默认情况下与"en-in/{dir1,dir2,dir3}/**/*.{js,json,css}"不匹配,然后从node_modules中删除"en-in/node_modules/**"。然后,您可以将globIgnores保留在[​​C0]中,它将不再被忽略。
  • "en-in/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.*.js"中更改globPatterns,使其与"en-in/node_modules/**"不匹配。 (我忘记了这样做的语法,但是如果其他两个选项不起作用,您也许可以弄清楚。)

可能还有其他几种选择。但是希望这可以解释根本原因。


0
投票

在此处,聚合物3注释在其页面上供维修人员使用。他们使生活变得轻松:)

服务人员

服务工作人员已加载并注册到index.html文件中。但是,在开发过程中(为了使调试更容易),Service Worker实际上不存在,仅使用存根文件。

生产时间Service Worker是在构建期间自动创建的,即通​​过运行npm run build或npm run build:static。该文件是基于polymer.json和sw-precache-config.js配置文件生成的,您可以在每个构建目录下找到它:

globIgnores

默认情况下,所有源文件(/ src目录中的文件)都将被预先缓存,如sw-precache-config.js配置文件中所指定。如果您想更改此行为,请查看sw-precache-config文档。

来源:en-in/node_modules/@webcomponents

© www.soinside.com 2019 - 2024. All rights reserved.