moobbit
moobbit
  • 发布:2026-01-29 11:48
  • 更新:2026-01-29 14:12
  • 阅读:79

【报Bug】运行到小红书小程序报错 exports is not defined(微信小程序正常)

分类:uni-app

产品分类: uniapp/小程序/小红书

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10

HBuilderX类型: 正式

HBuilderX版本号: 4.87

第三方开发者工具版本号: 2.8.2

基础库版本号: ""

项目创建方式: HBuilderX

操作步骤:

1、克隆示例仓库:git clone https://github.com/cnguu/uni-hbx-vite.git
2、进入目录安装依赖:pnpm i --frozen-lockfile
3、在 hbx 中运行到小红书小程序

预期结果:

正常运行到小红书小程序

实际结果:

运行到小红书小程序报错 exports is not defined

bug描述:

在 hbx 中运行到小红书小程序报错 exports is not defined,微信小程序是正常

2026-01-29 11:48 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

您好,根据现有信息,小红书小程序在运行时抛出
exports is not defined 基本可以判定是 构建产物里混入了 CommonJS 模块,而小红书运行时并未注入 module / exports 全局变量所致。下面给出排查与规避方案,您按顺序操作即可。


1. 快速验证是否 CommonJS 产物导致

  1. 在 HBuilderX 控制台或小红书开发者工具里找到具体报错文件(通常是某个 *.js 里出现 exports.xxx = …)。
  2. 如果该文件是第三方依赖,继续看第 2 步;如果是您自己写的,请改为 ES Module 写法(export const …)。

2. 让 Vite 不再输出 CommonJS

uni-app 的 Vite 模板默认会把部分依赖转成 CJS 以兼容旧库,小红书小程序不需要也不支持这种格式。请在项目根目录 vite.config.ts 里补充 / 修改以下配置:

import { defineConfig } from 'vite'  
import uni from '@dcloudio/vite-plugin-uni'  

export default defineConfig({  
  plugins: [uni()],  
  build: {  
    // 关键:强制输出 ES 模块  
    commonjsOptions: {  
      transformMixedEsModules: false,   // 禁止把 ESM 转成 CJS  
      exclude: []                       // 排除所有走 CJS 转换  
    }  
  },  
  optimizeDeps: {  
    // 把会生成 exports 的库提前强制 ESM 化  
    include: ['lodash-es', 'dayjs/esm'] // 按实际依赖填写  
  }  
})

修改后 删除 node_modules/.vite 缓存,重新 pnpm i 再运行。


3. 仍有问题?锁定具体依赖

若报错指向某个第三方库(如 lodash 的 CJS 版本),请:

  • 直接换用该库的 ESM 版本lodash-es 代替 lodash);
  • 或在 vite.config.ts 里加 optimizeDeps.include 强制预构建为 ESM。

4. 临时兜底方案(不推荐长期使用)

如果必须引用某个只提供 CJS 的库,可在项目根目录新建一个 小红书小程序专用 polyfill

// src/polyfill-exports.js  
if (typeof exports === 'undefined') {  
  globalThis.exports = {}  
  globalThis.module = { exports: globalThis.exports }  
}

然后在 main.ts 最顶部引入:

// #ifdef MP-XHS  
import './polyfill-exports.js'  
// #endif

仅作为临时绕过,正式发版前仍建议把依赖全部换成 ESM。


5. 需要官方进一步定位?

如按以上步骤仍复现,请补充以下信息在 ask 社区 发帖并 @官方:

  1. 小红书开发者工具版本号;
  2. 控制台完整报错截图(含文件名、行号);
  3. package.json@dcloudio 相关依赖版本;
  4. 精简后的复现仓库(可 fork 您给出的示例,删除无关页面)。

官方将在 4.88 alpha 中统一验证并修复。

内容为 AI 生成,仅供参考

要回复问题请先登录注册