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

Vite+React项目运行npm run dev时出现Could not resolve require("./locale/**/*")错误的解决方案咨询

Vite+React项目运行npm run dev时出现Could not resolve require("./locale/**/*")错误的解决方案咨询

看起来你遇到的是Vite无法解析moment-with-locales-es6包中动态require语句的问题,我来帮你一步步排查解决。

问题原因分析

  • Vite是基于ES模块的构建工具,对CommonJS语法中的**动态require**支持有限。你使用的moment-with-locales-es6@2.18.1是一个比较老旧的包,它的代码里用到了require("./locale/" + a)这种动态路径的写法,Vite无法提前预解析这种不确定的路径,因此抛出了解析错误。
  • 你同时安装了官方moment包和moment-with-locales-es6包,这两个包功能完全重叠,很容易造成依赖冲突和路径混淆,进一步加剧了问题。

解决方案(推荐方案优先)

方案一:移除冲突包,仅使用官方Moment.js包

官方Moment.js已经自带完整的多语言支持,完全不需要额外安装moment-with-locales-es6,步骤如下:

  1. 卸载冗余包:
npm uninstall moment-with-locales-es6
  1. 修改vite.config.js的别名配置,确保指向官方带多语言的文件:
// vite.config.js
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      'moment': 'moment/min/moment-with-locales.js',
    },
  },
});
  1. (可选)按需引入所需语言包,减少打包体积:
    如果你的项目只需要部分语言,没必要引入全部locale,可以在代码中按需导入:
import moment from 'moment';
// 按需引入需要的语言包,比如中文和英文
import 'moment/locale/zh-cn';
import 'moment/locale/en';

// 设置默认语言
moment.locale('zh-cn');

方案二:兼容旧版moment-with-locales-es6(不推荐)

如果因为特殊原因必须保留这个老旧包,可以通过Vite的依赖预构建和Rollup插件来处理动态require:

  1. 安装Rollup的CommonJS兼容插件:
npm install @rollup/plugin-commonjs --save-dev
  1. 更新vite.config.js配置:
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import commonjs from '@rollup/plugin-commonjs';

export default defineConfig({
  plugins: [react(), commonjs()],
  optimizeDeps: {
    // 强制Vite预构建moment-with-locales-es6包
    include: ['moment-with-locales-es6'],
  },
});

⚠️ 注意:这个方案只是临时兼容,老旧包可能存在其他未发现的兼容问题,还是推荐使用方案一彻底解决。

补充说明

你之前尝试更换Moment.js版本但未解决问题,核心原因是一直保留了moment-with-locales-es6这个冲突包,移除它之后再按方案一配置,应该就能正常运行npm run dev了。

备注:内容来源于stack exchange,提问作者Sasanka Mowli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:14:38