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-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 中的热模块替换到底是什么?