前言

在使用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的更多相关文章

  1. 为什么我的子线程更新了 UI 没报错?借此,纠正一些Android 程序员的一个知识误区

    开门见山: 这个误区是:子线程不能更新 UI ,其应该分类讨论,而不是绝对的. 半小时前,我的 XRecyclerView 群里面,一位群友私聊我,问题是: 为什么我的子线程更新了 UI 没报错? 我 ...

  2. 擦他丫的,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了!

    擦 ,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了! 问题在于我使用的谷歌浏览器,默认使用了缓存,导致每次访问同一个url时,都返回的是缓存里面的东西.通过谷歌 ...

  3. mlflow ui 启动报错No such file or directory: 'gunicorn': 'gunicorn'

    1.mlflow ui 启动报错,信息如下: [root@localhost mlflow]# mlflow ui /usr/local/python3/lib/python3./importlib/ ...

  4. 执行命令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 ...

  5. 【JSP引入报错】--package javax.servlet.jsp does not exist

    在eclipse maven中没报错的JSP在引入到netbeans的时候,JSP就报错了. 错误提示:package javax.servlet.jsp does not exist 百度找了下,有 ...

  6. React使用antd按需引入报错

    引言 按照antd官网配置按需引入,还是出现一系列的报错: 原因 在网上搜了一下,大部分说是react-scripts以及react-app-rewired版本不兼容的问题,我果断把下载低版本 npm ...

  7. jstl引入报错

    jstl1.0的引入方式为: <taglib uri="http://java.sun.com/jstl/core" prefix="c" /> j ...

  8. 解决flutter的image_cropper组件引入报错问题

    在使用flutter的图片裁剪组件image_cropper,github:https://github.com/hnvn/flutter_image_cropper 根据它的要求,安卓需要在文件[A ...

  9. vuex在页面中以对象展开运算符形式引入报错解决

    当页面中以mapGetters等对象扩展运算符写的时候,会报错 unexpected token 解决如下: babel还要加插件才能解释这个写法 npm install --save-dev bab ...

  10. VS 2015 .net UI界面报错总结

    一.提示錯誤 解決方法: 右击解决方案点击properties Window Ctrl+W ,P 将Mnaged Pipeline Mode 从Integrated更改为Classic 二.提示錯誤 ...

随机推荐

  1. STM8S003驱动TM1650偶发性故障

    故障现象:STM8S003驱动TM1650数码管显示,偶发TM1650无法初始化造成数码管点不亮. 已经在程序中对TM1650初始化之前加上了延时,但是问题并未改善. 之前发生过类似情况,STM8S0 ...

  2. 🎀chrome扩展程序本地打包

    简介 本文为Chrome浏览器已安装的扩展程序打包为离线.crx文件,便于在无法访问Chrome商店场景下使用 扩展管理页面 chrome://extensions/ 确定自己需要打包的扩展程序ID ...

  3. 为什么在 MySQL 中不推荐使用多表 JOIN?

    为什么在 MySQL 中不推荐使用多表 JOIN? 在 MySQL 中,虽然 JOIN 操作是关系型数据库的重要特性,用于从多个表中获取数据,但在某些场景下不推荐频繁使用多表 JOIN.以下是一些主要 ...

  4. kubernetes dashboard web控制台调研

    背景 kubernetes 是目前最流行的容器化系统,管理的方式一般都是最基础的kubectl命令客户端进行管理,但是对与一些没有基础的研发人员并不是很友好,所以我们需要一些web控制台,类似于云厂商 ...

  5. 2025dsfzB层考试总结

    2025年东师附中B层春季测试1考试总结 Designed By Lwj54joy AT 2025-03-01 本文将遵守GNU GPL2.0开源协议. 概述 总分:\(310/400\) 改题分数: ...

  6. Python实验1 温度转换与输入输出强化

    实验任务: 实现摄氏温度与华氏温度互转(保留两位小数) 扩展功能:输入错误处理(如非数字输入提示重新输入) 扩展:支持开尔文温度的三向转换 源代码:def c_to_f(c): return c * ...

  7. C#/.NET/.NET Core优秀项目和框架2025年4月简报

    前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的详细介绍.功能特点.使用方式以及部分功能 ...

  8. Axure RP仿抖音短视频APP交互原型图模板

    Axure RP仿抖音短视频APP高保真交互原型模板,原型图设计灵感来自于抖音段视频APP,在预览里你可以看到抖音的影子.本素材包含登录.首页推荐.同城.直播间.消息.朋友.发布.我的.搜索等主要模块 ...

  9. html_py

    Sock.py import socket def handle_request(client):     buf=client.recv(1024)     client.send(bytes(&q ...

  10. 浅析NodeJS中的事件循环和异步API

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...