下面给你一份 Vite 中 Sass 报警告 “JS API is deprecated(Sass JS API 已过期)” 的原因 + 最稳解决办法,基于当前(2025)最新的 Sass 与 Vite 生态规范整理。

这份指南包括根本原因、错误示例、最佳解决方案、未来迁移方向,一看就懂、马上能用。


🚨 一、为什么 Vite 中出现 Sass “JS API deprecated” 警告?

Sass 1.77+ 开始,官方宣布:

传统 JavaScript API(如 render / renderSync / compile / compileString 等旧方式)已过期(deprecated),未来会被移除。

Vite 的样式处理链条中,通常会由:

Vite → esbuild / rollup → sass → dart-sass → 旧 JS API

也就是说:
只要你项目中的某个依赖在调用旧 API,控制台就会出现警告。

常见触发依赖:

  • sass-loader(少见于 Vite,但部分插件会间接使用)
  • vite-plugin-style-import
  • vite-plugin-sass-dts
  • 某些 UI 框架内部 Sass 编译(如旧版 ElementPlus / Vuetify)
  • 你自己代码中使用 sass API(如 node-sass → dart-sass 手写脚本)

所以即使你的 vite.config.js 没有改动,也会冒出 Warning。


⚠️ 警告示例

控制台通常会看到:

Deprecation Warning: The Sass JavaScript API is deprecated and will be removed in a future version.
Use the new 'compile' API instead.


🧩 二、Sass 为何弃用旧 JS API?

原因主要是:

  1. 旧 API 设计不统一(既有 render 又有 compile)
  2. 异步/同步行为混乱(renderSync 将消失)
  3. 未来 Sass 将更靠近 WASM 实现,不再维护旧 Node.js 接口

新的 API 更现代统一:

  • sass.compile()
  • sass.compileString()

🚀 三、解决方案(按优先级排序)

✔️ 方案 1:升级 Sass 到最新版本(推荐)

npm i -D sass@latest

但注意:

升级 Sass 并不能 100% 消除警告,因为真正调用旧 API 的往往是“你项目里的其他依赖”

即 Sass 是对的,但你用的插件是旧的。


✔️ 方案 2:升级 Vite 插件和 UI 框架

最关键的是升级调用 Sass 的插件:

vite-plugin-style-import
vite-plugin-sass-dts
vite-plugin-vuetify
vite-plugin-vue2
@vitejs/plugin-vue

示例升级:

npm update

或者指定:

npm i vite-plugin-style-import@latest -D

大部分 2024 以前的版本仍在使用过时的 render() API。


✔️ 方案 3:检查是否使用了旧的 Node Sass API(你自己的代码)

如果你有脚本手动调用 Sass,比如:

import sass from 'sass';

sass.render({file: 'xxx.scss'}, () => {})

这是旧 API —— 会触发警告。

正确写法:

import sass from 'sass';

const result = sass.compile('xxx.scss');


✔️ 方案 4:强制使用 WASM 版本的 Sass(未来推荐)

npm i -D sass-embedded

vite.config.js:

export default {
  css: {
    preprocessorOptions: {
      scss: { api: 'modern-compiler' }
    }
  }
}

⚠️ 注意:只有 Vite 5+ 才能较好兼容 embedded sass。


✔️ 方案 5:暂时忽略警告(不推荐但可行)

有些插件作者还没有升级,从工程角度你可以暂时忽略:

node --no-warnings ...

但这是权宜之计,不推荐长期使用。


🎯 四、如何判断是哪个依赖导致的 Sass API 过期警告?

使用命令:

npm ls sass

找出所有依赖 Sass 的包。

如果某个包依赖了 “node-sass” 或 “sass-loader@<13″:

👉 一定会触发 deprecated 警告。


🧨 五、常见导致警告的依赖(2025 最新)

依赖是否会触发旧 API解决办法
node-sass✔ 会换成 dart-sass(即 sass)
sass-loader 10 以下✔ 会升级到 13+
vite-plugin-style-import 1.x✔ 会升级到 2.x
旧版 Vuetify✔ 会用官方 Vite 插件
element-plus < v2⚠️ 部分会升级 2.4+
旧 rollup-sass 插件✔ 会更换插件或升级

🏆 六、最稳的实际工程解决方案(直接套用)

Step 1:升级 Sass

npm i sass@latest -D

Step 2:升级全部相关插件

npm update

Step 3:检查 node-sass / sass-loader 是否存在

npm ls node-sass
npm ls sass-loader

如果有 → 删除 + 替换。

Step 4:用 modern API(如你自己写了 JS 调用 Sass)

Step 5:确保 Vite 版本 ≥ 5(Sass 1.77+ 官方推荐)


🎉 七、总结(最简版)

为什么警告?
因为 Sass 1.77+ 废弃旧 JS API,而 Vite 项目中的某些插件还在用。

怎么彻底解决?
升级 Sass + 升级插件 + 杜绝 node-sass + 使用 compile 新 API。