Angular 6出现There is no module with the namespace "math"报错如何解决
解决方案
- 首先卸载冲突的
node-sass依赖:node-sass是已废弃的LibSass封装,不支持Sass内置的math模块,且优先级高于你安装的dart-sass(也就是package.json里的sass依赖),直接执行卸载命令即可:
npm uninstall node-sass # 用yarn的话执行 yarn remove node-sass
- 清理项目缓存并重装依赖:避免旧依赖残留导致构建工具仍然调用已卸载的
node-sass:
rm -rf node_modules package-lock.json # 用yarn的话把package-lock.json换成yarn.lock npm install
- 处理
math模块导入问题:- 如果你是手动修改了业务代码里的除法为
math.div,需要在对应scss文件的最顶部添加导入语句:@use "sass:math"; - 如果你是修改了
node_modules里的kendo主题源码,不建议直接修改第三方依赖文件,优先升级@progress/kendo-theme-default到已修复该除法警告的最新稳定版本即可。如果暂时无法升级主题,可以执行sass-migrator的模块迁移命令自动给所有依赖的scss文件补全math模块导入:
sass-migrator module --migrate-deps ./src/styles.scss - 如果你是手动修改了业务代码里的除法为
- 临时规避方案:如果不想做上述改动,可以把所有
$a / $b的写法替换为$a * (1 / $b),该写法兼容新旧版本Sass,不会触发废弃警告也不需要导入math模块。
内容的提问来源于stack exchange,提问作者SilverFish
相关产品推荐
相关产品推荐

