uni-app vite5 项目运行报错

uni-app vite5 项目运行报错

开发环境 版本号 项目创建方式
Mac 最新 HBuilderX

产品分类:uniapp/H5

浏览器平台:Chrome
浏览器版本:最新

10:58:27.250   vite v5.2.8 dev server running at:
10:58:27.250   - Local:   http://localhost:5173/
10:58:27.254   - Network: http://192.168.199.111:5173/
10:58:27.255 项目 yyjh5 编译成功。前端运行日志,请另行在浏览器的控制台查看。
10:58:27.255 点击控制台右上角debug图标(虫子),可开启断点调试(添加断点:双击编辑器行号添加断点)
10:58:27.255 Web版常见问题参考: https://ask.dcloud.net.cn/article/35232
10:58:27.255   ready in 1151ms.
10:58:29.415 [vite] connecting...
10:58:29.437 [vite] connected.  

index.js:18 Uncaught TypeError: (intermediate value).globEager is not a function
at index.js:18:34
(anonymous) @   index.js:18  

// #ifdef VUE3
const modulesFiles = import.meta.globEager('./modules/*.js');
for (const modulePath in modulesFiles) {
const moduleName = modulePath.replace(/^.\/modules/(.*).*\w+$/, '$1')
modules[moduleName] = modulesFiles[modulePath].default;
}
// #endif  

查询了下:
vite5中import.meta.globEager已经被废弃,改成使用import.meta.glob('*', { eager: true })

怎么解决?

更多关于uni-app vite5 项目运行报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

感谢反馈,最近的升级,vue3 的底层 vite 升级到了 v5 版本,在这个版本中官方废弃使用 globEager ,
https://cn.vitejs.dev/guide/migration.html#removed-deprecated-apis

import.meta.globEager:使用 import.meta.glob(’*’, { eager: true }) 来代替

改成下面的书写方式是否可以解决你的问题,如果仍有问题请和我反馈

更多关于uni-app vite5 项目运行报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我使用demo项目,运行就报错,这个代码import.meta.globEager是uniapp自动生成的,没有修改的地方;可能需要官方来修改,或者降低hbx内置的vite版本了。。。。

回复 00后霸道总裁: 我使用 hbuilder 4.14 运行 vue2/vue3 未能复现这个问题,是使用那个 demo 呢,请再多解释一下,提供更多信息有助于定位和修复问题

回复 DCloud_UNI_OttoJi: 下面放了个demo

错误项目示例 代码;
使用https://ext.dcloud.net.cn/plugin?name=vk-cloud-router ,导入hbx,运行web,console会有报错

我下载项目,修改 index.js 中的 // const modulesFiles = import.meta.globEager(’./modules//*.js’); const modulesFiles = import.meta.glob(’./modules//*.js’, { eager: true }) 就可以了,你是指这个项目作者没有适配需要通知他适配是吗?

已经通知作者进行适配更新,在项目没有更新之前,你可以沿用你本地的项目进行修改

回复 DCloud_UNI_OttoJi: 找到代码了,感谢感谢

回复 00后霸道总裁: :)

回复 DCloud_UNI_OttoJi: 有用,感谢

在使用 uni-appVite 5 进行项目开发时,可能会遇到一些运行错误。以下是一些常见的错误及其解决方法:

1. 依赖冲突

  • 错误描述: 由于 uni-appVite 5 的依赖版本不兼容,可能会导致项目无法正常运行。
  • 解决方法: 确保所有依赖的版本是兼容的。可以通过以下命令检查并更新依赖:
    npm outdated
    npm update
    
    如果问题依然存在,可以尝试删除 node_modulespackage-lock.json,然后重新安装依赖:
    rm -rf node_modules package-lock.json
    npm install
    

2. 插件问题

  • 错误描述: uni-app 可能需要特定的 Vite 插件,而这些插件可能与 Vite 5 不兼容。
  • 解决方法: 检查 vite.config.jsvite.config.ts 文件中的插件配置,确保所有插件都支持 Vite 5。可以尝试更新插件版本或寻找替代插件。

3. 环境变量问题

  • 错误描述: Vite 5 可能对环境变量的处理方式有所改变,导致项目无法正确读取环境变量。
  • 解决方法: 确保在 .env 文件中正确配置了环境变量,并在 vite.config.jsvite.config.ts 中正确使用它们。例如:
    import { defineConfig, loadEnv } from 'vite';
    
    export default defineConfig(({ mode }) => {
      const env = loadEnv(mode, process.cwd(), '');
      return {
        define: {
          'process.env': env
        }
      };
    });
    

4. 路径别名问题

  • 错误描述: Vite 5 可能对路径别名的处理方式有所改变,导致项目无法正确解析路径。
  • 解决方法: 确保在 vite.config.jsvite.config.ts 中正确配置了路径别名。例如:
    import { defineConfig } from 'vite';
    import path from 'path';
    
    export default defineConfig({
      resolve: {
        alias: {
          '@': path.resolve(__dirname, './src')
        }
      }
    });
    

5. HMR(热模块替换)问题

  • 错误描述: Vite 5 的 HMR 机制可能与 uni-app 不完全兼容,导致热更新失败。
  • 解决方法: 可以尝试禁用 HMR 或使用 vite-plugin-uni 插件来解决兼容性问题。例如:
    import { defineConfig } from 'vite';
    import uni from '@dcloudio/vite-plugin-uni';
    
    export default defineConfig({
      plugins: [uni()],
      server: {
        hmr: false
      }
    });
    

6. 构建问题

  • 错误描述: 在构建项目时,可能会遇到一些错误,如文件路径错误、资源加载失败等。
  • 解决方法: 检查 vite.config.jsvite.config.ts 中的构建配置,确保所有路径和资源都正确配置。例如:
    import { defineConfig } from 'vite';
    
    export default defineConfig({
      build: {
        outDir: 'dist',
        assetsDir: 'assets'
      }
    });
    

7. TypeScript 配置问题

  • 错误描述: 如果项目使用 TypeScript,可能会遇到类型定义错误或编译错误。
  • 解决方法: 确保 tsconfig.json 文件中的配置与 Vite 5 兼容。例如:
    {
      "compilerOptions": {
        "target": "ESNext",
        "module": "ESNext",
        "moduleResolution": "Node",
        "strict": true,
        "esModuleInterop": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true
      },
      "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
    }
    

8. Vue 版本问题

  • 错误描述: uni-app 可能需要特定版本的 Vue,而 Vite 5 可能默认使用不同版本的 Vue。
  • 解决方法: 确保在 package.json 中指定了与 uni-app 兼容的 Vue 版本。例如:
    {
      "dependencies": {
        "vue": "^3.2.0"
      }
    }
    

9. CSS 预处理器问题

  • 错误描述: 如果项目使用了 CSS 预处理器(如 SCSS、Less),可能会遇到编译错误。
  • 解决方法: 确保在 vite.config.jsvite.config.ts 中正确配置了 CSS 预处理器。例如:
    import { defineConfig } from 'vite';
    
    export default defineConfig({
      css: {
        preprocessorOptions: {
          scss: {
            additionalData: `@import "@/styles/variables.scss";`
          }
        }
      }
    });
    

10. 浏览器兼容性问题

  • 错误描述: Vite 5 默认使用现代浏览器特性,可能导致在旧版浏览器中无法正常运行。
  • 解决方法: 可以通过配置 vite.config.jsvite.config.ts 来支持旧版浏览器。例如:
    import { defineConfig } from 'vite';
    
    export default defineConfig({
      build: {
        target: 'es2015'
      }
    });
回到顶部