patch-package:taro-ui引入报错 Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0
前言
在使用taro ui时候报错如下
> Executing task: yarn run dev:weapp <
yarn run v1.22.17
$ npm run build:weapp -- --watch
> turntable@1.0.0 build:weapp
> taro build --type weapp "--watch"
Taro v3.4.8
Tips: 预览模式生成的文件较大,设置 NODE_ENV 为 production 可以开启压缩。
Example:
$ set NODE_ENV=production && taro build --type weapp --watch
启动 开发者工具-项目目录 D:\code\turntable\dist
生成 工具配置 D:\code\turntable\dist/project.config.json
编译 发现入口 src/app.ts
编译 发现页面 src/pages/game/index.tsx
编译 发现页面 src/pages/index/index.tsx
编译 发现页面 src/pages/me/index.tsx
- 正在编译...
Deprecation Warning: Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.
Recommendation: math.div($at-button-height, 2) or calc($at-button-height / 2)
More info and automated migrator: https://sass-lang.com/d/slash-div
╷
87 │ border-radius: $at-button-height / 2;
│ ^^^^^^^^^^^^^^^^^^^^^
╵
node_modules\taro-ui\dist\style\components\button.scss 87:20 root stylesheet
由输出信息推测可得知 sass v2.0已经删除了width: $var / 2这种写法,改成了width: calc($var / 2)写法 看接下来的步骤
修复报错的地方
如果一个一个手动改,当然没问题,有点麻烦,要改几十处或者上百处
所以我们使用sass官方推荐的自动升级写法的插件sass-migrator
# yarn
yarn add --dev sass-migrator
执行自动适配升级
注意如果是windows下,建议用git bash执行下命令,windows终端有兼容问题,可能无效
$ ./node_modules/.bin/sass-migrator division ./node_modules/taro-ui/dist/style/components/*.scss
执行完毕,进入node_module/taro-ui,会发现刚才报错的地方,已经自动升级了
将修改的地方打包
如上,虽然修复了问题,可是以上报错信息是在人家封装三方包里node_module/taro-ui,我们直接去改并且使用了,可是如果我重新安装依赖 或者升级就又丢了,那怎么做呢?
使用patch-package工具
yarn add --dev patch-package
将修改的地方进行打包操作
./node_modules/.bin/patch-package taro-ui
执行完成后,会在项目根目录的 patches 目录中创建补丁文件 taro-ui+3.0.0-alpha.3.patch,这个补丁需要提交到你项目代码仓库中
在 package.json 的 scripts 中加入 "postinstall": "patch-package",后续执行 npm install 或 yarn install 命令时,会自动为依赖包打补丁了
一键解决
当然你觉得以上步骤麻烦,我提供了一键解决的脚本。
请将一下代码保存至一个脚本文件中,比如 fix-scss.sh,然后去执行它即可。
如果是windows请用bash模拟工具执行,如git bash
echo "---===installation dependency===---"
yarn add --dev sass-migrator patch-package postinstall-postinstall
echo "use sass-migrator to fix problems"
./node_modules/.bin/sass-migrator division ./node_modules/taro-ui/dist/style/components/*.scss
echo "---===use patch-package to save this edit===---"
./node_modules/.bin/patch-package taro-ui
echo "---===use postinstall-postinstall to automatic operation in the future===---"
hasPostinstall=$(grep '"postinstall":' package.json)
if [[ "$hasPostinstall" != "" ]];then
echo "Make sure your package.json has following [script:{\"postinstall\": \"patch-package\", ...]"
else
scriptLine=$(grep -n '"scripts": {' package.json | cut -d : -f 1)
newScript=$(sed "${scriptLine}a\ \"postinstall\": \"patch-package\"," package.json)
echo "$newScript" > package.json
echo "done!"
fi
参考
https://blog.csdn.net/m0_54854484/article/details/123080841
https://github.com/NervJS/taro-ui/issues/1462
https://shawchen08.github.io/2020/05/24/patch-package/
https://lequ7.com/guan-yu-sass-cong-sassbreakingchangeslashasdivision-shuo-qi.html
后续
目前pnpm暂不支持此包,因为pnpm自研了补丁系统
https://blog.csdn.net/qq_45585640/article/details/128772678
patch-package:taro-ui引入报错 Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0的更多相关文章
- 为什么我的子线程更新了 UI 没报错?借此,纠正一些Android 程序员的一个知识误区
开门见山: 这个误区是:子线程不能更新 UI ,其应该分类讨论,而不是绝对的. 半小时前,我的 XRecyclerView 群里面,一位群友私聊我,问题是: 为什么我的子线程更新了 UI 没报错? 我 ...
- 擦他丫的,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了!
擦 ,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了! 问题在于我使用的谷歌浏览器,默认使用了缓存,导致每次访问同一个url时,都返回的是缓存里面的东西.通过谷歌 ...
- mlflow ui 启动报错No such file or directory: 'gunicorn': 'gunicorn'
1.mlflow ui 启动报错,信息如下: [root@localhost mlflow]# mlflow ui /usr/local/python3/lib/python3./importlib/ ...
- 执行命令npm publish报错:403 Forbidden - PUT https://registry.npmjs.org/kunmomotest2 - You cannot publish over the previously published versions: 0.0.1.
前言 执行命令npm publish报错:403 Forbidden - PUT https://registry.npmjs.org/kunmomotest2 - You cannot publis ...
- 【JSP引入报错】--package javax.servlet.jsp does not exist
在eclipse maven中没报错的JSP在引入到netbeans的时候,JSP就报错了. 错误提示:package javax.servlet.jsp does not exist 百度找了下,有 ...
- React使用antd按需引入报错
引言 按照antd官网配置按需引入,还是出现一系列的报错: 原因 在网上搜了一下,大部分说是react-scripts以及react-app-rewired版本不兼容的问题,我果断把下载低版本 npm ...
- jstl引入报错
jstl1.0的引入方式为: <taglib uri="http://java.sun.com/jstl/core" prefix="c" /> j ...
- 解决flutter的image_cropper组件引入报错问题
在使用flutter的图片裁剪组件image_cropper,github:https://github.com/hnvn/flutter_image_cropper 根据它的要求,安卓需要在文件[A ...
- vuex在页面中以对象展开运算符形式引入报错解决
当页面中以mapGetters等对象扩展运算符写的时候,会报错 unexpected token 解决如下: babel还要加插件才能解释这个写法 npm install --save-dev bab ...
- VS 2015 .net UI界面报错总结
一.提示錯誤 解決方法: 右击解决方案点击properties Window Ctrl+W ,P 将Mnaged Pipeline Mode 从Integrated更改为Classic 二.提示錯誤 ...
随机推荐
- STM8S003驱动TM1650偶发性故障
故障现象:STM8S003驱动TM1650数码管显示,偶发TM1650无法初始化造成数码管点不亮. 已经在程序中对TM1650初始化之前加上了延时,但是问题并未改善. 之前发生过类似情况,STM8S0 ...
- 🎀chrome扩展程序本地打包
简介 本文为Chrome浏览器已安装的扩展程序打包为离线.crx文件,便于在无法访问Chrome商店场景下使用 扩展管理页面 chrome://extensions/ 确定自己需要打包的扩展程序ID ...
- 为什么在 MySQL 中不推荐使用多表 JOIN?
为什么在 MySQL 中不推荐使用多表 JOIN? 在 MySQL 中,虽然 JOIN 操作是关系型数据库的重要特性,用于从多个表中获取数据,但在某些场景下不推荐频繁使用多表 JOIN.以下是一些主要 ...
- kubernetes dashboard web控制台调研
背景 kubernetes 是目前最流行的容器化系统,管理的方式一般都是最基础的kubectl命令客户端进行管理,但是对与一些没有基础的研发人员并不是很友好,所以我们需要一些web控制台,类似于云厂商 ...
- 2025dsfzB层考试总结
2025年东师附中B层春季测试1考试总结 Designed By Lwj54joy AT 2025-03-01 本文将遵守GNU GPL2.0开源协议. 概述 总分:\(310/400\) 改题分数: ...
- Python实验1 温度转换与输入输出强化
实验任务: 实现摄氏温度与华氏温度互转(保留两位小数) 扩展功能:输入错误处理(如非数字输入提示重新输入) 扩展:支持开尔文温度的三向转换 源代码:def c_to_f(c): return c * ...
- C#/.NET/.NET Core优秀项目和框架2025年4月简报
前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的详细介绍.功能特点.使用方式以及部分功能 ...
- Axure RP仿抖音短视频APP交互原型图模板
Axure RP仿抖音短视频APP高保真交互原型模板,原型图设计灵感来自于抖音段视频APP,在预览里你可以看到抖音的影子.本素材包含登录.首页推荐.同城.直播间.消息.朋友.发布.我的.搜索等主要模块 ...
- html_py
Sock.py import socket def handle_request(client): buf=client.recv(1024) client.send(bytes(&q ...
- 浅析NodeJS中的事件循环和异步API
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...