laravel-mix 生成空(0 字节).css 文件,没有动态导入和 .extract

dus*_*_bg 5 javascript laravel webpack laravel-mix

当我运行时,我在不使用 .extract 和 import() 的情况下获得了空的 .css 文件 npm run dev

我的 webpack.mix.js:

let mix = require('laravel-mix');
mix.js('resources/assets/js/app.js', 'public/js').sourceMaps()
    .js('resources/assets/js/admin.js', 'public/js').sourceMaps()
    .sass('resources/assets/sass/app.scss', 'public/css')
    .sass('resources/assets/sass/admin.scss', 'public/css');

mix.copyDirectory('resources/assets/img', 'public/img');
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我删除 .js 混合文件之一,它会起作用。例如这有效:

mix.js('resources/assets/js/app.js', 'public/js').sourceMaps()
    .sass('resources/assets/sass/app.scss', 'public/css')
    .sass('resources/assets/sass/admin.scss', 'public/css');
Run Code Online (Sandbox Code Playgroud)

这也有效:

mix.js('resources/assets/js/admin.js', 'public/js').sourceMaps()
    .sass('resources/assets/sass/app.scss', 'public/css')
    .sass('resources/assets/sass/admin.scss', 'public/css');
Run Code Online (Sandbox Code Playgroud)

但在那之后我需要生成 admin.js(或 app.js)。这不是很方便。任何想法我做错了什么?

我的环境是:

  • Laravel 混合版本:5.0.0
  • 节点版本:11.0.0
  • NPM 版本:6.10.3
  • 操作系统:macOS High Siera / Ubuntu 18.04 LTS

我确定我没有动态导入,因为我是从 laravel-mix v.3 升级的。但我也检查了我的代码。如果我有动态导入,我的示例都不会起作用。

编辑:我发现问题出在我导入的 admin.js 文件中:

import router from './router'
Run Code Online (Sandbox Code Playgroud)

在 /router/index.js 中有另一个导入:

import routes from './routes.js'
Run Code Online (Sandbox Code Playgroud)

问题 se?ms 在 routes.js 文件中,如下所示:

const routes = [
    {
        path: '/',
        component: resolve => require(['../views/admin/dashboard/dashboard.vue'], resolve),
        meta: {
            title: "Dashboard",
        }
    },
];
export default routes
Run Code Online (Sandbox Code Playgroud)

但是,我仍然无法解释这里的动态导入在哪里?!?!?或者这是如何工作的:

mix.js('resources/assets/js/admin.js', 'public/js').sourceMaps()
    .sass('resources/assets/sass/admin.scss', 'public/css');
Run Code Online (Sandbox Code Playgroud)

dus*_*_bg -1

我改变了这个:

component: resolve => require(['../views/admin/dashboard/dashboard.vue'], resolve),
Run Code Online (Sandbox Code Playgroud)

对此:

component: require('../views/admin/dashboard/dashboard.vue').default,
Run Code Online (Sandbox Code Playgroud)

现在可以了。这篇文章非常有帮助:Webpack 中的热模块替换到底是什么?