uni-app 更新3.98后设置target: 'esnext'编译报错 [plugin:uni:app-nvue-esbuild] exports is not defined

发布于 1周前 作者 phonegap100 来自 Uni-App

uni-app 更新3.98后设置target: 'esnext’编译报错 [plugin:uni:app-nvue-esbuild] exports is not defined

操作步骤:

  • 在vite.config.ts设置target: ‘esnext’

预期结果:

  • 正在编译运行

实际结果:

  • [plugin:uni:app-nvue-esbuild] exports is not defined

bug描述:

  • 更新3.98后 在vite.config.ts设置target: ‘esnext’ 后H5运行没有问题 app运行编译报错 [plugin:uni:app-nvue-esbuild] exports is not defined
信息类别 详情
产品分类 uniapp/App
PC开发环境 Mac
PC系统版本号 13.4.1
HBuilderX类型 正式
HBuilderX版本 3.98
手机系统 Android
手机系统版本 Android 11
手机厂商 小米
手机机型 Redmin Note 8 Pro
页面类型 vue
vue版本 vue3
打包方式 离线
项目创建方式 HBuilderX

3 回复

感谢反馈,后续会修复。
临时解决方案:替换附件文件到 HBuilderX根目录/plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-app-vite/dist/nvue/plugins/,然后重新编译。


HBuilderX 3.99.2023121601-alpha 已修复。

在 uni-app 更新到 3.98 版本后,如果你在 manifest.json 中设置了 "target": "esnext",并且在编译 nvue 页面时遇到 [plugin:uni:app-nvue-esbuild] exports is not defined 的错误,这通常是因为 esnext 目标与 nvue 的编译环境不兼容。

解决方案

  1. 检查 manifest.json 配置: 确保你的 manifest.json 文件中没有错误地设置了 "target": "esnext"。对于 nvue 页面,建议使用默认的 "target": "es5"

    {
      "app-plus": {
        "nvueCompiler": "uni-app",
        "target": "es5" // 确保 target 设置为 es5
      }
    }
  2. 修改 manifest.json 配置: 如果你确实需要使用 esnext,可以尝试将 target 设置为 es5,或者移除 target 配置,让 uni-app 使用默认的编译目标。

    {
      "app-plus": {
        "nvueCompiler": "uni-app",
        "target": "es5" // 修改为 es5 或移除 target 配置
      }
    }
  3. 检查代码中的模块化语法: 如果你在代码中使用了 import/export 等 ES6+ 的模块化语法,确保这些语法在 nvue 页面中是兼容的。nvue 页面可能不支持某些高级的 ES6+ 特性。

  4. 更新 uni-app 和相关依赖: 确保你的 uni-app 和相关依赖(如 [@dcloudio](/user/dcloudio)/uni-app[@dcloudio](/user/dcloudio)/uni-cli-shared 等)是最新版本。有时,更新到最新版本可以解决一些兼容性问题。

    npm update [@dcloudio](/user/dcloudio)/uni-app [@dcloudio](/user/dcloudio)/uni-cli-shared
  5. 使用 nvue 页面的兼容模式: 如果你仍然遇到问题,可以尝试使用 nvue 页面的兼容模式,确保代码在 nvue 环境中能够正常运行。

    {
      "app-plus": {
        "nvueCompiler": "weex" // 使用 weex 编译器
      }
    }
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!