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

Docker环境Sass构建报错求助:TypeError无法读取undefined的indexOf属性

解决Sass构建报错:TypeError: Cannot read properties of undefined (reading 'indexOf')

问题背景

  • 运行4年的Sass构建流程突发失败,核心报错:
    TypeError: Cannot read properties of undefined (reading 'indexOf')
        at /Users/me/myCode/node_modules/sass/sass.dart.js:116832:12
        at Object.applyHooksTransformer (/Users/me/myCode/node_modules/sass/sass.dart.js:1863:14)
        at Object.initHooks (/Users/me/myCode/node_modules/sass/sass.dart.js:1843:251)
        at Object.initNativeDispatchContinue (/Users/me/myCode/node_modules/sass/sass.dart.js:1809:9)
        at Object.initNativeDispatch (/Users/me/myCode/node_modules/sass/sass.dart.js:1803:9)
        at Object.getNativeInterceptor (/Users/me/myCode/node_modules/sass/sass.dart.js:29308:13)
        at Object.getInterceptor$x (/Users/me/myCode/node_modules/sass/sass.dart.js:29569:16)
        at Object.set$compile$x (/Users/me/myCode/node_modules/sass/sass.dart.js:29636:16)
        at Object.main (/Users/me/myCode/node_modules/sass/sass.dart.js:24401:9)
        at main2 (/Users/me/myCode/node_modules/sass/sass.dart.js:26210:9)
    
  • 构建基于Docker环境,推测因官方Node镜像4天前更新导致npm版本升级;本地升级Node/npm后可复现问题。
  • 构建内容:编译Bootstrap及单个custom.scss文件,近期未改动前端代码,上次成功构建为10月18日。

已尝试无效方案

  • 升级sass、gulp-sass至多个大版本(含最新版)
  • 清理npm缓存并重装相关依赖包

解决方案

1. 锁定Node Docker镜像版本

Docker使用latest标签会自动拉取最新镜像,导致环境变更。需指定上次成功构建时的具体Node版本:

  • 从服务器构建日志或Docker镜像历史中查找10月18日使用的Node版本(如node:18.17.1)
  • 修改Dockerfile,将基础镜像改为指定版本:
    FROM node:18.17.1
    
  • 清理Docker构建缓存并重新构建:
    docker build --no-cache .
    

2. 对齐gulp-sass、sass与gulp的版本兼容性

新版本Node可能与旧版构建工具不兼容,需确保三者版本匹配:

  • 查看gulp-sass的peer依赖要求,安装对应版本的sass
  • 若使用gulp 3.x,需降级gulp-sass至4.x版本,搭配兼容的sass版本(如^1.32.13)
  • 示例依赖配置(package.json):
    {
      "devDependencies": {
        "gulp": "^4.0.2",
        "gulp-sass": "^5.1.0",
        "sass": "^1.69.5"
      }
    }
    

3. 排除gulp干扰,直接测试Sass编译

若上述方案无效,先排除gulp的影响:

  • 直接使用sass命令编译custom.scss:
    sass custom.scss custom.css
    
  • 若直接编译成功,说明问题出在gulp-sass的适配或gulp配置上,需检查gulpfile.js中是否有与新版本Node冲突的逻辑(如路径处理、钩子函数)

4. 彻底清理依赖环境

在容器内执行以下命令,确保依赖完全重装:

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:47:11