Laravel/Vue Js 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.