You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue+Laravel Mix生产环境报错TypeError: o is not a function求助

问题

我使用Vue 2搭配Laravel Mix/Webpack开发,Node版本为14.18.1。执行npm run dev时项目运行完全正常,但运行npm run production构建生产环境代码时,抛出错误:TypeError: o is not a function。

错误截图:生产构建错误截图

我的配置文件

webpack.mix.config.js

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

mix.webpackConfig({
    output: {
        publicPath: '/laravel/',
        chunkFilename: 'js/chunks/[name].js?id=[chunkhash]'
    }
});

mix.js('resources/js/app.js', 'public/laravel/js')
    .sass('resources/sass/app.scss', 'public/laravel/css')
    .sourceMaps()
    .setPublicPath('public/laravel/')
    .setResourceRoot('../')
    .version();

package.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 --config=node_modules/laravel-mix/setup/webpack.config.js",
        "prod": "npm run production",
        "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
    },
    "devDependencies": {
        "axios": "^0.18.1",
        "babel-plugin-syntax-dynamic-import": "^6.18.0",
        "bootstrap": "^4.3.1",
        "core-js": "^3.2.1",
        "cross-env": "^5.2.1",
        "jquery": "^3.6.0",
        "laravel-mix": "^2.0",
        "lodash": "^4.17.21",
        "popper.js": "^1.15.0",
        "vue": "^2.6.10",
        "vue-server-renderer": "^2.6.10",
        "vue-template-compiler": "^2.6.14"
    },
    "dependencies": {
        "@fortawesome/fontawesome-svg-core": "^1.2.25",
        "@fortawesome/free-solid-svg-icons": "^5.11.2",
        "@fortawesome/vue-fontawesome": "^0.1.7",
        "@google/markerclustererplus": "^2.1.11",
        "bootstrap-vue": "^2.17.3",
        "google-maps-api-loader": "^1.1.1",
        "icheck": "^1.0.2",
        "intl-tel-input": "^15.1.2",
        "magnific-popup": "^1.1.0",
        "node-sass": "^4.14.1",
        "nouislider": "^13.1.5",
        "pretty-checkbox-vue": "^1.1.9",
        "regenerator-runtime": "^0.13.3",
        "sweetalert2": "^7.33.1",
        "v-lazy-image": "^1.3.2",
        "v-mask": "^2.2.3",
        "vue-clickaway": "^2.2.2",
        "vue-cookie-law": "^1.8.0",
        "vue-flickity": "^1.2.1",
        "vue-float-label": "^1.6.1",
        "vue-gallery": "^1.5.0",
        "vue-loading-skeleton": "^1.1.9",
        "vue-notification": "^1.3.20",
        "vue-perfect-scrollbar": "^0.1.0",
        "vue-slider-component": "^2.8.16",
        "vue-tel-input": "^2.5.0",
        "vuex": "^3.1.1",
        "vuse": "^0.1.1",
        "webpack-jquery-ui": "^2.0.1",
        "wnumb": "^1.1.0"
    }
}

解决方案

1. 修复版本兼容性问题

当前Laravel Mix 2.x版本与Node 14.18.1兼容性不佳,可二选一:

  • 降级Node到12.x LTS版本;
  • 升级Laravel Mix到4.x版本(适配Vue 2,且支持Node 10+)。

2. 调整压缩混淆配置

生产构建的TypeError大概率是代码压缩时函数名被混淆导致的,修改webpack.mix.config.js:

// 方法一:保留函数名防止混淆
mix.webpackConfig({
    output: {
        publicPath: '/laravel/',
        chunkFilename: 'js/chunks/[name].js?id=[chunkhash]'
    },
    optimization: {
        minimizer: [
            new (require('terser-webpack-plugin'))({
                terserOptions: {
                    keep_fnames: true
                }
            })
        ]
    }
});

// 方法二:临时禁用压缩,验证问题根源
mix.options({
    terser: {
        enabled: false
    }
});

3. 排查第三方依赖

逐个移除近期新增的第三方依赖(如vue-flickity、v-mask等),每次移除后执行npm run production,定位到引发错误的包,更换为兼容版本或替代方案。

4. 更新Babel配置

旧版Babel插件可能导致生产构建转译错误:

  1. 安装依赖:
npm install @babel/core @babel/preset-env --save-dev
  1. 项目根目录创建.babelrc:
{
    "presets": [
        ["@babel/preset-env", {
            "useBuiltIns": "usage",
            "corejs": 3
        }]
    ],
    "plugins": ["syntax-dynamic-import"]
}

5. 清理缓存重装依赖

rm -rf node_modules package-lock.json
npm cache clean --force
npm install
npm run production

内容的提问来源于stack exchange,提问作者niklas196

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:12:02