laravel 5:带有sw-precache的动态网址

时间:2018-04-20 02:39:44

标签: php laravel routing laravel-5.4 service-worker

我正在尝试将离线的第一个功能调整到我的laravel 5.4 app.verything工作正常,直到我需要更具体地缓存我的刀片文件我有一个包含通配符的URL的问题。我尝试了几种方法,但没有任何作用/这是我的webpack.mix.js函数触发sw-precache插件

mix.webpackConfig({
    plugins: [
    new SWPrecacheWebpackPlugin({
        cacheId: 'pwa',
        filename: 'service-worker.js',
        staticFileGlobs: ['public/**/*.{css,eot,svg,ttf,woff,woff2,js,html}'],
        minify: true,
        stripPrefix: 'public/',
        handleFetch: true,
        staticFileGlobsIgnorePatterns: [/\.map$/, /mix-manifest\.json$/, /manifest\.json$/, /service-worker\.js$/],
         dynamicUrlToDependencies: {
           '/'.{slug}.'/projects' : 'resources/views/userProfile.blade.php'
         },
        navigateFallback: '/',
        runtimeCaching: [
            {
                urlPattern: /^https:\/\/fonts\.googleapis\.com\//,
                handler: 'cacheFirst'
            },
            {
                urlPattern: /^https:\/\/www\.thecocktaildb\.com\/images\/media\/drink\/(\w+)\.jpg/,
                handler: 'cacheFirst'
            }
        ],
        // importScripts: ['./js/push_message.js']
    })
    ]
});
当我运行npm run production时,使用此代码

它会给我一个意外令牌的语法错误。

我尝试像这个'/{slug}/projects' : 'resources/views/userProfile.blade.php'一样内联,并且在执行npm时没有错误,但是当我在浏览器上测试它时它会制动URL。 有谁知道如何使这项工作? 非常感谢任何答案。

1 个答案:

答案 0 :(得分:0)

您应该为此使用正则表达式

'/\.*/projects' : 'resources/views/userProfile.blade.php',

PS:您收到错误,因为Laravel mix不知道'slug'(应该是变量),并且laravel mix是js文件,您必须使用+作为串联运算符。