项目通过 npm update 升级依赖后,启动项目,报警如下:

Deprecation Warning [legacy-js-api]: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0.

你在 Vue3 + Vite3 项目中使用 npm update 后遇到的这个警告,是 Dart Sass 弃用旧版 JavaScript API 的提示。这表明项目中的某些依赖仍在调用旧的 API,但好消息是这通常只是一个警告,目前不会影响项目的正常运行,不过在未来 Dart Sass 2.0.0 中可能会被移除。

别担心,这个问题通常可以通过一些配置来解决。下面我将为你提供几种解决方案。

🛠️ 解决 Sass Legacy JS API 弃用警告

解决方案对比

以下是几种解决方法的对比,你可以根据自己的情况选择:

方法 操作 优点 缺点 适用场景
配置 Vite 修改 vite.config.js 一劳永逸,根治问题 需要修改项目配置 推荐大多数项目使用
升级依赖 升级 sass 和 sass-loader 简单直接 可能需兼容性检查 依赖较旧的项目
临时静默警告 配置 silenceDeprecations 快速去除警告 只是隐藏警告,未真正解决 临时应急使用

修改 Vite 配置(推荐)

这是最直接有效的解决方法,强制 Sass 使用现代 API 。

  1. 打开项目根目录下的 vite.config.js (或 vite.config.ts)

  2. 修改 CSS 预处理器配置

    你需要确保在 css.preprocessorOptions.scss 中设置 api: 'modern-compiler'

    javascript

    // vite.config.js
    import { defineConfig } from 'vite'
    import vue from '@vitejs/plugin-vue'
    
    export default defineConfig({
      plugins: [vue()],
      css: {
        preprocessorOptions: {
          scss: {
            api: 'modern-compiler' // 或 'modern'
            // 注意:如果你之前在这里有其他 SCSS 配置(如 additionalData),请保留它们
            // additionalData: `@import "@/assets/styles/variables.scss";`
          }
        }
      }
    })
  3. 保存文件并重启开发服务器:重启你的开发服务器(通常通过 npm run dev),警告应该就会消失。

检查并更新相关依赖

如果修改 Vite 配置后警告仍然存在,可能是某些深层依赖还在使用旧 API。你可以尝试检查并更新主要的 Sass 相关依赖:

bash

# 更新 sass 和 sass-loader (如果它们在项目的 package.json 中)
npm update sass sass-loader

# 或者指定最新版本安装
npm install sass@latest sass-loader@latest

临时静默警告(不推荐)

如果你只是想暂时隐藏这个警告(例如为了清洁的控制台输出),可以在 Vite 配置中使用 silenceDeprecations 选项。但这只是权宜之计,问题依然存在

javascript

// vite.config.js
export default defineConfig({
  css: {
    preprocessorOptions: {
      scss: {
        silenceDeprecations: ['legacy-js-api'] // 静默特定弃用警告
      }
    }
  }
})

检查第三方库

有时,这个警告可能并非由你的直接代码引起,而是某个第三方 UI 库或插件(例如 uni-ui)使用了旧版 Sass API。如果怀疑是这种情况,可以:

  1. 检查这些库的官方 issue 或更新日志,看是否有相关修复。

  2. 尝试更新这些库到最新版本:npm update your-ui-library

  3. 如果库尚未更新,除了等待官方修复,你也可以尝试按照上述方法在自己的 Vite 配置中设置 api: 'modern-compiler',这有时也能覆盖第三方库的调用。

验证配置是否生效

完成上述任何一项更改后,请务必重新启动你的开发服务器npm run dev),更改才能生效。


✨ 对于大多数情况,首选修改 Vite 配置的方法,因为它直接解决了 API 使用的根本问题,且通常最有效。

修改效果:

修改代码:vite.config.ts

  // CSS 预处理器配置
  css: {
    preprocessorOptions: {
      scss: {
        api: "modern-compiler" // 或 'modern'
        // 注意:如果你之前在这里有其他 SCSS 配置(如 additionalData),请保留它们
        // additionalData: `@import "@/assets/styles/variables.scss";`
      }
    }
  },

Logo

加入社区!打开量化的大门,首批课程上线啦!

更多推荐