node-sass在内网环境下的安装编译报错

问题描述

升级node版本后,本地编译成功,将本地node_modules.zip传到云效,在云效(linux)服务器编译前端报错,node-sass找不到binding.node

问题分析

node升级后一般都要重装node-sass,本地执行 npm rebuild node-sass即可,但是云效服务器编译报错,原因在于win和linux需要安装的node-sass不同造成的。

问题解决

本地(window)环境,node升级后编译打包正常,将代码和node_modules.zip上传到云效,由于本地无法为linux系统安装node-sass,所以可以下载linux对应的node-sass版本,放在 node_modules/node-sass/vendor文件夹下。此时不需要在再执行 npm rebuild node-sass了,重新在云效执行编译即可。

注意 win 和 linux 版本要对应

# win
- vendor
-- win32-x64-88
--- binding.node

# linux
-- linux-x64-88
--- building.node

备注问题

  • 编译和打包报警告
Deprecation Warning: Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.

# 提示:sass2.0.0 之后弃用除法符号“/”,sass自定义element theme时会报warnning。
# 解决方法

npm install -g sass-migrator
cd node_modules
sass-migrator division **/*.scss
  • 也可以考虑弃用node-sass改用dart-sass来解决问题,以下:
  • 升级node后考虑弃用node-sass,改用dart-sass,但是安装dart-sass后依然报上面的警告。
EPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.
Recommendation: math.div($px, $html-font-size)
More info and automated migrator: https://sass-lang.com/d/slash-div
   ╷
18 │   @return $px / $html-font-size * 1rem;
   │           ^^^^^^^^^^^^^^^^^^^^^

# sass版本 >1.26.x 对 / (除法)做了优化 ,不提倡用了。所以还用 / (除法)的话,最高版本只能1.26.x
# 所以解决这个问题的方法就是在package.json文件中:
# "sass": "^1.26.5",    替换为  "sass": "~1.26.5",

"sass": "~1.26.5",
"sass-loader": "^8.0.2"

参考链接

posted @ 2022-06-16 18:25  小方块的世界  阅读(1961)  评论(0编辑  收藏  举报