首页 > 解决方案 > 未找到 Laravel 混合提取功能

问题描述

我的 laravel 应用程序有一个非常标准的 webpack 文件

const mix = require('laravel-mix');
mix.js('resources/js/app.js', 'public/js')
    .extract("['lodash', 'axios', 'jquery','bootstrap','tether','prismjs','jquery.mb.ytplayer','owl.carousel']")
    .sass('resources/sass/app.scss', 'public/css')
    .sourceMaps();

 if (mix.inProduction()) {
    mix.version();
 }

但因npm run watch以下错误而失败

anadi@MacAnadi onex_web % npm run watch

> @ watch /Users/anadi/Code/github/onex/website/onex_web
> npm run development -- --watch


> @ development /Users/anadi/Code/github/onex/website/onex_web
> cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js "--watch"

/Users/anadi/Code/github/onex/website/onex_web/node_modules/webpack-cli/bin/cli.js:93
                throw err;
                ^

TypeError: extraction.libs.join is not a function

标签: node.jslaravelwebpacklaravel-mix

解决方案


您已将参数作为字符串传递给该extract方法。它需要一个数组,并且由于join不是 中的函数String.prototype,这就是导致 TypeError 的原因。将您的呼叫更改为以下将起作用。

const mix = require('laravel-mix');
mix.js('resources/js/app.js', 'public/js')
    .extract(['lodash', 'axios', 'jquery','bootstrap','tether','prismjs','jquery.mb.ytplayer','owl.carousel'])
    .sass('resources/sass/app.scss', 'public/css')
    .sourceMaps();

 if (mix.inProduction()) {
    mix.version();
 }

推荐阅读