标签: laravel-mix

找不到模块:错误:无法解析“flag-icon-css”

我将在我的 laravel 项目中安装此管理面板https://coreui.io/(免费版本)。它包含一个具有以下依赖项的 package.json 文件:

    "dependencies": {
    "@coreui/coreui": "^2.1.5",
    "@coreui/coreui-plugin-chartjs-custom-tooltips": "1.2.0",
    "@coreui/icons": "0.3.0",
    "bootstrap": "^4.2.1",
    "chart.js": "2.7.3",
    "core-js": "^2.6.1",
    "flag-icon-css": "^3.2.1",
    "font-awesome": "4.7.0",
    "jquery": "3.3.1",
    "pace-progress": "1.0.2",
    "perfect-scrollbar": "^1.4.0",
    "popper.js": "^1.14.6",
    "simple-line-icons": "2.4.1"
  },
Run Code Online (Sandbox Code Playgroud)

因此,我将把这些依赖项放入我的 package.json 中并运行 npm installnpm run dev。我的项目的packaje.json是

{
  "private": true,
  "scripts": {
    "dev": "npm run development",
    "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "npm run development -- --watch",
    "watch-poll": "npm run watch -- --watch-poll",
    "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot …
Run Code Online (Sandbox Code Playgroud)

npm laravel laravel-mix core-ui

5
推荐指数
1
解决办法
9452
查看次数

延迟加载的 vue-router 组件不适用于 SSR

我有两个不同的 server.js 和 client.js 入口点。(我使用的是 vue-server-renderer 和 laravel-mix)-(我的 server.js 和 client.js 看起来与这里描述的完全一样-spatie/laravel-服务器端渲染,如果我进行静态导出,import Test from '../views/Test'它就可以工作..

如果我尝试在没有延迟加载的情况下导入路由,SSR 可以工作:

import Test from "../views/Test";

export const routes = [{
    path: '/my-route',
    name: "Test",  
    component: Test,
}]
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试延迟加载,它会在 SSR 上失败:

export const routes = [{
    path: '/my-route',
    name: "Test"
    component: () => import('../views/Test.vue'),
}]
Run Code Online (Sandbox Code Playgroud)

找不到模块“./js/chunks/server/0.js?id=c3384f174123f0848451”

对于() => import('../views/Home.vue), client.js 有效,只有 server.js 无效。


我的server.js

import renderVueComponentToString from 'vue-server-renderer/basic';
import app from './app';
import {router} from './router/index';

new …
Run Code Online (Sandbox Code Playgroud)

javascript webpack vue.js vue-router laravel-mix

5
推荐指数
1
解决办法
2401
查看次数

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

当我运行时,我在不使用 .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 …

javascript laravel webpack laravel-mix

5
推荐指数
1
解决办法
2043
查看次数

有没有办法同时查看两个 Laravel Mix Webpack 配置文件是否有任何更改?

使用 Laravel Mix,是否可以使用一个命令查看两个 Webpack 配置文件,以便对任何底层文件的更改立即导致必要的文件被编译?

具体来说,我有以下两个与 Laravel Mix 一起使用的 Webpack 配置文件:webpack.css.mix.jswebpack.js.mix.js

scripts然后我在的对象中有以下命令package.json

"development-css": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --watch --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js --env.mixfile=webpack.css.mix",
"development-js": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --watch --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js --env.mixfile=webpack.js.mix",
"watch": "npm run development-css -- --watch & npm run development-js -- --watch",
Run Code Online (Sandbox Code Playgroud)

npm run watch命令仅监视指定的第一个命令。在上述情况下,我保存到 Sass 文件的任何更改都会构建,但不会更改任何 JS/Vue 文件。如果我在命令中切换这两个命令watch,那么 JS 将基于更改/保存构建,而不是 Sass。

有谁知道如何构造命令npm run watch(或底层命令),以便我可以同时观看 Sass 和 JS?

另外,值得一提的是,由于目前 Laravel Mix 中的一个错误,我不得不将 Sass 和 JS 编译分成两个单独的文件。此错误记录在此处:https ://github.com/JeffreyWay/laravel-mix/issues/1914 …

watch webpack npm-run laravel-mix

5
推荐指数
1
解决办法
3619
查看次数

Laravel Mix 和 Turbolinks

我在 turbolinks 设置方面遇到了一些问题。这是设置:Laravel Mix - 默认值:bootstrap,jquery,..)。就在 bootstrap.js 文件之后,我包含了 turbolinks。一切正常,直到页面重新加载 - 我总是出错。我究竟做错了什么?

错误:

app.js:1282 Uncaught TypeError: $ is not a function
    at HTMLDocument.<anonymous> (app.js:1282)
    at Object.push../node_modules/turbolinks/dist/turbolinks.js.e.dispatch (vendor.js:105933)
    at r.notifyApplicationAfterPageLoad (vendor.js:105934)
    at r.visitCompleted (vendor.js:105934)
    at r.complete (vendor.js:105933)
    at r.<anonymous> (vendor.js:105933)
    at vendor.js:105933
Run Code Online (Sandbox Code Playgroud)

有错误的行:

document.addEventListener('turbolinks:load',function() {
    new SimpleBar(document.getElementsByClassName("js-simplebar")[0]);
    $(".sidebar-toggle").on("click", function() {
        //...
    });
});
Run Code Online (Sandbox Code Playgroud)

编辑这里是 js 包括(编译 - Laravel Mix)

<head>
<script defer src="/js/manifest.js" data-turbolinks-track="true"></script>
<scrip`enter code here`t defer src="/js/vendor.js" data-turbolinks-track="true"></script>
<script defer src="/js/app.js" data-turbolinks-track="true"></script>
</head>
Run Code Online (Sandbox Code Playgroud)

这是我的 app.js:

require('./bootstrap');
let Turbolinks = require('turbolinks'); …
Run Code Online (Sandbox Code Playgroud)

javascript jquery turbolinks bootstrap-4 laravel-mix

5
推荐指数
1
解决办法
1205
查看次数

如何在 Laravel Mix 中使用 FullCalendar

我已经使用 npm 安装了 Fullcalendar 库包。

npm i --save @fullcalendar/core 
    @fullcalendar/interaction @fullcalendar/daygrid 
    @fullcalendar/timegrid @fullcalendar/list @fullcalendar/bootstrap
Run Code Online (Sandbox Code Playgroud)

我也将它包含在 app.js 中。

require('@fullcalendar/core');
require('@fullcalendar/bootstrap');
require('@fullcalendar/list');
require('@fullcalendar/timegrid');
require('@fullcalendar/daygrid');
require('@fullcalendar/interaction');
Run Code Online (Sandbox Code Playgroud)

但是,当尝试使用以下代码创建日历时:

var calendarEl = document.getElementById('calendar');
calendar = new Calendar(calendarEl, {
    plugins: [ 'interactionPlugin', 'bootstrapPlugin', 'dayGridPlugin', 'timeGridPlugin', 'listPlugin'],
});
Run Code Online (Sandbox Code Playgroud)

我收到错误...

Uncaught ReferenceError: Calendar is not defined at HTMLDocument.<anonymous>new Calendar

.

我究竟做错了什么?

我的 webpack.mix.js 看起来像这样:

const mix = require('laravel-mix');
mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css').version();
Run Code Online (Sandbox Code Playgroud)

编辑:

将我的 app.js 设置为:

window.FullCalendar = require('@fullcalendar/core');
window.bootstrapPlugin = require('@fullcalendar/bootstrap');
window.interactionPlugin = require('@fullcalendar/interaction');
window.listPlugin …
Run Code Online (Sandbox Code Playgroud)

fullcalendar laravel laravel-mix fullcalendar-5

5
推荐指数
1
解决办法
584
查看次数

如何在 vue.js 欢迎组件中使用 bootstrap 而不是 tailwind CSS

我将 jetstream+inertia.js 安装到我的 Laravel 项目中,一切正常,但我只需要在welcome. vue组件中使用 bootstrap 5,那么我该如何处理呢?

我的app.js档案;

require('./bootstrap');

// Import modules...
import {createApp, h} from 'vue';
import {App as InertiaApp, plugin as InertiaPlugin} from '@inertiajs/inertia-vue3';
import 'animate.css';
import Toaster from '@meforma/vue-toaster';
import 'alpinejs';



const el = document.getElementById('app');

createApp({
    render: () =>
        h(InertiaApp, {
            initialPage: JSON.parse(el.dataset.page),
            resolveComponent: (name) => require(`./Pages/${name}`).default,
        }),
})
    .mixin({methods: {route}})
    .use(InertiaPlugin)
    .use(Toaster)
    .mount(el);
Run Code Online (Sandbox Code Playgroud)

我的app.css文件:

@import 'tailwindcss/base';
@import 'tailwindcss/components';
@import 'tailwindcss/utilities';
Run Code Online (Sandbox Code Playgroud)

图片

javascript inertiajs laravel laravel-mix laravel-jetstream

5
推荐指数
1
解决办法
1381
查看次数

sass-loader extraData/prependData/data 使包大小膨胀

我正在使用 Vue2 和 laravel-mix,我希望我的变量可以全局访问。我最终发现了这个:

mix.webpackConfig({
    module: {
        rules: [
            {
                test: /\.scss$/,
                use: [
                    {
                        loader:  'sass-loader',
                        options: {
                            //this might be "data" or "prependData" depening on your version
                            additionalData: `@import "./resources/js/styles/variables.scss";`
                        }
                    }
                ]
            }
        ]
    }
})
Run Code Online (Sandbox Code Playgroud)

这确实使我的变量可以全局访问,但本质上是将其复制variables.scss到每个 vue 组件中,这极大地膨胀了我的包大小。

我怎样才能防止这种情况发生?

编辑:当导入的文件相对较大时,这只是一个问题。在我的项目中,导入的文件本身导入了一个主题 scss(以访问主题变量),它最终将整个内容复制到我需要变量的任何地方。
我通过在单独的文件中定义自定义变量并在“覆盖变量”文件中使用这些变量来解决此问题,如下所示:
custom-variables.scss

$red: #ff0000;
Run Code Online (Sandbox Code Playgroud)

覆盖变量.scss

import 'theme.scss'; //this bloated my project
import 'custom-variables';

$--theme-red: $red
Run Code Online (Sandbox Code Playgroud)

当我在 vue 组件中需要这种主题颜色时,我只是导入了而custom-variables.scss不是overwriting-variables.scss.
这确实解决了我的膨胀问题,但并没有完全解决问题,custom-variables.scss我的项目中仍然有多个实例,这并不重要,因为它真的很小。所以我仍然很高兴听到其他解决方案!

sass webpack vue.js vuejs2 laravel-mix

5
推荐指数
1
解决办法
6843
查看次数

Laravel Mix:ValidationError:CSS Loader 已使用与 API 架构不匹配的选项对象进行初始化

我最近尝试运行npm run devnpm run watch,但在编译 80% 后出现错误。我尝试使用谷歌搜索它,但没有找到解决方案。下面是我在控制台中得到的错误。

./resources/sass/frontend/app.scss 中的错误模块构建失败(来自 ./node_modules/mini-css-extract-plugin/dist/loader.js):ModuleBuildError:模块构建失败(来自 ./node_modules/css- loader/dist/cjs.js): ValidationError: 无效的选项对象。CSS Loader 已使用与 AP I 架构不匹配的选项对象进行初始化。

  • options.url 应该是以下之一:boolean | 对象{过滤器?} -> 允许启用/禁用url()/image-set()功能处理。-> 在https://github.com/webpack-contrib/css-loader#url阅读更多 详情:
    • options.url 应该是一个布尔值。
    • options.url 应该是一个对象: object { filter? 在验证 (E:\Web Projects\project\node_modules\webpack\node_modules\schema-utils\dist\validate.js:105:11) 在 Object.getOptions (E:\Web Projects\project\node_modules\webpack\lib \NormalModule.js:527:19) 在 Object.loader (E:\Web Projects\project\node_modules\css-loader\dist\index.js:31:27) 在 processResult (E:\Web Projects\project\node_modules \webpack\lib\NormalModule.js:701:19) 在 E:\Web Projects\project\node_modules\webpack\lib\NormalModule.js:807:5 在 E:\Web Projects\project\node_modules\loader-runner\ lib\LoaderRunner.js:399:11 在 E:\Web Projects\project\node_modules\loader-runner\lib\LoaderRunner.js:251:18

webpack.mix.js

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

mix.setPublicPath('public')
    .setResourceRoot('../')
    .vue()
    .sass('resources/sass/frontend/app.scss', …
Run Code Online (Sandbox Code Playgroud)

node.js npm laravel webpack laravel-mix

5
推荐指数
1
解决办法
414
查看次数

摩纳哥编辑工人

所以我目前正在尝试使用此软件包设置 Monaco 编辑器: https: //github.com/egoist/vue-monaco

除了一条错误消息之外,它工作得很好:

Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/Microsoft/monaco-editor#faq

You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker
Run Code Online (Sandbox Code Playgroud)

现在我知道你需要启动一个工作人员,但是,我似乎无法让它正常工作。

我一直在使用 Laravel 和 Laravel Mix 来让这一切正常工作,但是似乎没有关于如何设置工作人员的文档。

任何帮助,将不胜感激。

webpack monaco-editor laravel-mix

5
推荐指数
1
解决办法
4630
查看次数