webpack4+vue2项目使用 sass-embedded 导致的 DockerfIle 构建失败的问题

事情发生的原因

事情一开始很简单,前端项目的 package-lock.json 锁文件在某一git 提交时,取消追踪了。 当然啦,这是本人的杰作,昨天发现,唉~这样是不是不好哎,一查,果然不适合,理论出处

然后我就恢复了 package-lock.json 锁文件的追踪,用这个命令 git add <文件路径> 然后 .gitignore 一改直接提交到生产环境了。 临下班前,想更新一下,这一构建,出了大问题

矮黑,文件不存在,让我感觉到事情远远没有那么简单,赶紧回退,然后草草下班

排查与解决

自己搞半天查半天,本地的构建没问题,真的邪门。 现代科技发达了,赶到了好时候。有啥问题问 AI 就可以。 我把出问题的分支,直接拷贝到了本机wsl里。 然后开始构建,构建卡住了

什么? sass问题,和我lock文件有啥关系,八嘎。 然后把 vue.config.js 里的css配置引入sass-embedded 一注释, npm run build 也好了, 构建镜像也好了docker build -t test-assets . 呦西!

AI解释:Linux 环境里当前安装出来的 sass-embedded 没拿到可执行的 Dart Sass embedded 编译器,于是退到了 pure JS(Pure JavaScript,纯 JavaScript)模式;而 sass --embedded 在 pure JS 模式不可用,所以 Vue CLI(Command Line Interface,命令行接口)构建一直卡住/失败,最终没有生成 assets 目录,Docker 才报:/build-app/assets: not found.

没有追踪 package-lock.json 时,Jenkins 每次 npm install 都会按 package.json 里的版本范围重新解析依赖;你恢复锁文件后,Jenkins 被固定到了你本地这次生成出来的依赖树。这个依赖树里刚好触发了 Linux 下的 sass-embedded 问题。

知道了问题,还是用回单纯的 sass 吧,再次把锁文件提交,把 sass-embedded 依赖一删,ikun!

相关推荐
IT_陈寒9 分钟前
Java线程池用错参数,我的服务居然悄悄崩溃了
前端·人工智能·后端
卡布鲁23 分钟前
React useMemo 与 useCallback 完全指南:原理、场景与避坑
前端·react.js
碳基修炼39 分钟前
排查记:本地 devServer 是 http,浏览器却把 302 重定向升级成了 https
前端·http
步行cgn41 分钟前
Spring p 命名空间注入详解
java·前端·spring
何何____1 小时前
Vue 生命周期详解
前端·javascript
江米小枣tonylua1 小时前
TypeScript 全面の拥抱 !Prisma 8 + Electron 升级实战
前端
闪耀之光M781 小时前
npm命令解析
前端
咸鱼老弟2 小时前
AI Agent 的"自主性悖论"——为什么给它的自由度越大,越要配一套更硬的护栏
前端·人工智能
默_笙2 小时前
💫 闭包是个背包:拆解小米前端面试题里的三道"闭包陷阱"
前端·javascript·面试
天若有情6732 小时前
粒子星空背景单页HTML模板|炫酷动态星空特效网页(纯前端)
前端·html·css动画·网页特效·粒子星空·静态网页模版