You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CRA迁移Vite后执行build遇node_modules严格模式语法错误求助

解决Vite构建时子依赖的'use strict'语法错误

问题根源

ES5规范禁止在带有非简单参数列表(比如参数解构、默认参数)的函数内部使用"use strict"指令,Vite的CommonJS解析器严格遵循该规范,因此触发报错。

解决方案

1. 定位问题依赖包

首先要找到抛出错误的具体子依赖:

  • 如果报错信息里包含完整文件路径,直接查看路径对应的包名;
  • 没有路径的话,执行npm ls或yarn why排查可疑依赖,比如结合报错里的日期2023-05-11搜索相关包的版本发布记录。

2. 配置Vite强制转译该依赖

在vite.config.js中添加以下配置,让Vite正确转译问题依赖:

export default {
  build: {
    commonjsOptions: {
      // 包含问题依赖包,强制Vite处理它的CommonJS语法
      include: ['问题依赖包名', /node_modules/]
    }
  },
  optimizeDeps: {
    // 预构建时处理该依赖
    include: ['问题依赖包名']
  }
}

3. 给依赖打补丁(patch-package)

如果无法升级/降级依赖,直接修改问题代码并生成补丁:

  1. 安装patch-package:
    npm install patch-package --save-dev
    
  2. 找到问题依赖的对应文件,将函数内的"use strict"移到函数外部,或者修改参数列表(比如把function({}, factory)改成function(options, factory),再在函数内部const {} = options);
  3. 生成补丁:
    npx patch-package 问题依赖包名
    
  4. 将生成的patches/目录提交到版本控制,后续安装依赖时会自动应用补丁。

4. 降级Vite版本

部分Vite新版本的CommonJS解析器过于严格,降级到4.x系列的稳定版本(比如4.4.5)可能绕过该问题:

npm install vite@4.4.5

内容的提问来源于stack exchange,提问作者Hamodey_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 01:03:10