自更新以来,Laravel mix 不会在生产模式下构建

Posted

技术标签:

【中文标题】自更新以来,Laravel mix 不会在生产模式下构建【英文标题】:Laravel mix won't build in production mode since update 【发布时间】:2021-01-21 12:39:47 【问题描述】:

我正在一个非 Laravel 项目中运行 Laravel Mix,以编译一些 SASS + JS。

它工作正常,仍然处于npm run dev 模式,但npm run prod 崩溃:

aah@1.0.0 prod /var/www/path/to/aah cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --config=node_modules/laravel-mix/setup/webpack.config.js

ERROR 编译失败,出现 2 个错误15:50:46

./src/bootstrap.scss 中的错误

模块构建失败(来自 ./node_modules/css-loader/index.js): ModuleBuildError:模块构建失败(来自 ./node_modules/css-loader/index.js): 未闭合字符串 (11:115694)

(删除了几行很长的已编译 CSS!)

在 /var/www/.../aah/node_modules/webpack/lib/NormalModule.js:316:20

  at /var/www/.../aah/node_modules/loader-runner/lib/LoaderRunner.js:367:11

  at /var/www/.../aah/node_modules/loader-runner/lib/LoaderRunner.js:233:18

  at context.callback (/var/www/.../aah/node_modules/loader-runner/lib/LoaderRunner.js:111:13)

  at Object.<anonymous> (/var/www/.../aah/node_modules/css-loader/lib/loader.js:44:18)        

  at /var/www/.../aah/node_modules/css-loader/lib/processCss.js:214:4

webpack.mix.js

let mix = require('laravel-mix');
mix.js('src/bootstrap.js', 'aah/js/')    
  .js('src/aah.js', 'aah/js/')           
  .sass('src/bootstrap.scss', 'aah/css/')
  .sass('src/civicrm.scss', 'aah/css/')  

package.json

  "dependencies":                       
    "bootstrap-sass": "^3.4.1"           
  ,                                     
  "devDependencies":                    
    "cross-env": "^6.0.3",               
    "laravel-mix": "^5.0.5",             
    "node-sass": "^4.14.1",              
    "resolve-url-loader": "^3.1.1",      
    "sass-loader": "^8.0.2",             
    "vue-template-compiler": "^2.6.12"   
                                        

【问题讨论】:

【参考方案1】:

如果你更新 Laravel Mix 和你的包版本,它可以在 dev 和 prod 中工作。但是,当然,我不知道你的 JS 和 SCSS 内容是什么。


    "private": true,
    "scripts": 
        "dev": "npm run development",
        "development": "mix",
        "watch": "mix watch",
        "watch-poll": "mix watch -- --watch-options-poll=1000",
        "hot": "mix watch --hot",
        "prod": "npm run production",
        "production": "mix --production"
    ,
    "devDependencies": 
        "axios": "^0.21.4",
        "bootstrap-sass": "^3.4.1",
        "cross-env": "^7.0.3",
        "laravel-mix": "^6.0.31",
        "node-sass": "^6.0.1",
        "resolve-url-loader": "^4.0.0",
        "sass": "^1.42.1",
        "sass-loader": "^12.1.0",
        "vue-template-compiler": "^2.6.14"
    

你的 ./src/bootstrap.scss 是什么样的?

【讨论】:

以上是关于自更新以来,Laravel mix 不会在生产模式下构建的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Mix:更新 Node.js 依赖项

Laravel mix / webpack 不会在通过 babel() 编译的脚本上触发监视功能

如何在自定义 URL 上运行 Laravel mix?

带有 laravel-mix 的 vue-loader 15

laravel-mix 文档翻译

如何在 Laravel 中更新生产数据库中的数据?