manifest.json 文件未在生产模式下加载

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

我正在尝试为我的 Vue/Laravel 应用制作 PWA。我面临的问题是我的 manifest.json 文件没有链接到我的生产构建头。在我的开发中它工作正常,浏览器正在检测 manifest.json 但不是在服务器上。

我已将 manifest.json 链接到我的 app.blade.php 文件,但是在生产服务器上,当我看到源代码时,没有附加 manifest.json。

这是我的 app.blade.php

    <!DOCTYPE html>
    <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <meta name="csrf-token" content="{{ csrf_token() }}"/>
            <link rel="manifest" href="manifest.json" />
            
            <title>{{env('APP_NAME')}}</title>
        </head>
        <body class="antialiased">
            <div id="app"></div>  
            <script src="{{ asset('js/main.js') }}"></script>
        </body>
    </html>

我的 webpack.mix.js 配置是

    const mix = require('laravel-mix');
    const path = require('path');
    const WebpackPwaManifest = require('webpack-pwa-manifest');
    const { WebpackManifestPlugin } = require('webpack-manifest-plugin');
    
    /*
     |--------------------------------------------------------------------------
     | Mix Asset Management
     |--------------------------------------------------------------------------
     |
     | Mix provides a clean, fluent API for defining some Webpack build steps
     | for your Laravel applications. By default, we are compiling the CSS
     | file for the application as well as bundling up all the JS files.
     |
     */
    
    mix.ts('resources/js/main.ts', 'public/js')
      .vue({ version: 3 })
      .postCss('resources/css/app.css', 'public/css', [
        //
      ])
      .sourceMaps();
    
    mix.browserSync('http://localhost/');
    
    mix.webpackConfig(module.exports = {
      resolve: {
        alias: {
          '@/pages': path.resolve(__dirname, './resources/js/pages'),
          '@/assets': path.resolve(__dirname, './resources/js/assets'),
        },
      },
    
    });
    
    mix.webpackConfig({
      plugins: [
        new WebpackManifestPlugin(),
        new WebpackPwaManifest({
          name: "DC",
          short_name: "DC",
          start_url: "/",
          display: "standalone",
          theme_color: "#004c97",
          background_color: "#fff",
          icons: [
            {
              "src": path.resolve(__dirname, './resources/js/assets/images/logo-pwa.png'),
              "sizes": "256x256",
              "type": "image/png"
            }
          ],
          id: "/#/login",
          filename: 'manifest.json',
          publicPath: '/',
          basePath: '/public',
        }),
      ],
    });
    
    
    mix.options({
      hmrOptions: {
        host: 'localhost',
        port: 8000
      }
    })  

记住,它在开发上运行良好,但在生产上运行不佳。

这是我的产量

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <meta name="csrf-token" content="irPGXqkRHKDYOBD1G0rPYsNp0Iwu881BIeCbmBfo"/>
            <title>Abc</title>
        </head>
        <body class="antialiased">
            <div id="app"></div>  
            <script src="https://xxxx/js/main.js"></script>
        </body>
    </html>

如您所见,这里没有附加清单文件

laravel vue.js laravel-mix
© www.soinside.com 2019 - 2024. All rights reserved.