使用 Laravel Mix 制作的空白页

Blank Page on production using Laravel Mix

我使用 Laravel 8 + Vue.js + InertiaJs 构建了一个单页应用程序 (SPA)。在开发环境中一切正常,但是当我为生产编译资产时,它显示一个空白页面,并且控制台中没有错误。所有资产都使用 200 代码正确加载,一切似乎都正常,但 Vue 应用程序未安装!

webpack.mix.js

const mix = require('laravel-mix');
require('laravel-mix-workbox');

mix.webpackConfig({
    output: {
        filename: '[name].js',
        chunkFilename: 'js/[name].js',
    }
}).js('resources/js/app.js', 'public/js')
    .extract(['vue'])
    .version();

Image1

Image2

Image3

尝试使用 pingCRM github 提供的 inertiajs webpack.mix.js:

const path = require('path')
const mix = require('laravel-mix')
const cssImport = require('postcss-import')
const cssNesting = require('postcss-nesting')

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

mix
  .js('resources/js/app.js', 'public/js')
  .vue()
  .postCss('resources/css/app.css', 'public/css', [
    // prettier-ignore
    cssImport(),
    cssNesting(),
    require('tailwindcss'),
  ])
  .webpackConfig({
    output: { chunkFilename: 'js/[name].js?id=[chunkhash]' },
    resolve: {
      alias: {
        vue$: 'vue/dist/vue.runtime.esm.js',
        '@': path.resolve('resources/js'),
      },
    },
  })
  .version()
  .sourceMaps()

请注意,您可能必须按照 tailwindcss 中的说明进行设置,该说明可在 here 中找到,仅当您打算使用它时才执行此操作,否则请将 require('tailwindcss'), 从网页包文件

您可能还需要 npm install --save-dev postcss-importnpm install --save-dev postcss-nesting --save-dev 标志会将其添加到您的 package.json 文件以供将来参考