uni-app Hello模板下easycom配置与leftwindow冲突报错:uni is not defined

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

uni-app Hello模板下easycom配置与leftwindow冲突报错:uni is not defined

示例代码:

{  
 "easycom": {  
    "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue",  
  }  
}

操作步骤:

用Hello uni-app模板建的uni-app项目,依uview-ui官网的操作步骤使用npm安装uview-ui@2.0.36,在pages.json里配置easycom,运行到chrome报错:Uncaught ReferenceError: uni is not defined,如果不配置easycom或去掉leftWindow页面显示正常。

预期结果:

Hello uni-app模板可以正常安装uview-ui最新版本,并且支持easycom的配置,同时在pc端浏览器里可正常运行。

实际结果:

报错:Uncaught ReferenceError: uni is not defined

bug描述:

用Hello uni-app模板建的uni-app项目,安装uview-ui后,在pages.json里配置了easycom,运行到chrome报错:Uncaught ReferenceError: uni is not defined,如果不配置easycom或去掉leftWindow页面显示正常。


4 回复

类似问题,在left-widnow使用uview2.0的u-icon组件,报错 Uncaught ReferenceError: uni is not defined at eval (props.js:6:22) at Object.OQtX (index.js:3768:1) at webpack_require (index.js:854:30) at fn (index.js:151:20) at eval (u-icon.vue:52:1) at Object.XCwf (index.js:3994:1) at webpack_require (index.js:854:30) at fn (index.js:151:20) at eval (null:1:1) at Module.CDQf (index.js:3233:1)


你们怎么解决的 我是在top-windos 使用了ico 这个可以正常运行部 如果我家pinia sh

import useTestStore from “@/store/modules/test”;

const TestStore = useTestStore();

就报错了<br>

props.js 文件里的 uni is not defined 在这leftwindow,topwindow,rightwindow三个里识别不了,有办法解决么

在使用 uni-app 进行开发时,如果在 Hello 模板下配置 easycom 并与 leftWindow 产生冲突,导致报错 uni is not defined,通常是因为 easycom 的自动导入机制与某些全局配置或组件加载顺序出现了问题。以下是一些可能的原因和解决方案:


1. 检查 easycom 配置

easycom 是 uni-app 提供的自动导入组件机制。如果配置不当,可能会导致组件加载顺序错误,从而引发 uni is not defined 的报错。

  • 打开 pages.json,检查是否有正确的 easycom 配置。例如:
    {
      "easycom": {
        "autoscan": true,
        "custom": {
          "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
        }
      }
    }
    确保 easycom 的配置符合项目需求,并且没有与其他全局配置冲突。

2. 检查 leftWindow 配置

leftWindow 是 uni-app 的分屏窗口配置,通常用于实现左右分屏布局。如果 leftWindow 的加载顺序或依赖关系处理不当,可能会导致 uni 对象未定义。

  • 打开 pages.json,检查 leftWindow 的配置。例如:
    {
      "leftWindow": {
        "path": "pages/left/left",
        "style": {
          "width": "300px"
        }
      }
    }
    确保 leftWindow 的路径和配置正确,并且其依赖的组件或页面已经正确加载。

3. 确保 uni 对象已加载

uni is not defined 表示 uni 对象未加载或未正确初始化。uni 是 uni-app 的全局对象,通常在应用启动时自动加载。如果报错,可能是以下原因:

  • 页面加载顺序问题:确保 leftWindow 或其他页面加载时,uni 对象已经初始化。
  • 脚本引入问题:检查是否有未正确引入的脚本或依赖库,导致 uni 对象未加载。

4. 检查 main.jsApp.vue

main.jsApp.vue 中,确保全局依赖和组件已正确加载。例如:

  • main.js 中,确保已正确引入 uni 相关依赖:

    import Vue from 'vue';
    import App from './App';
    
    Vue.config.productionTip = false;
    App.mpType = 'app';
    
    const app = new Vue({
      ...App
    });
    app.$mount();
  • App.vue 中,确保没有在 uni 对象加载前使用它。


5. 调试和排查

如果以上方法无法解决问题,可以尝试以下步骤:

  • 注释代码:逐步注释 leftWindoweasycom 相关代码,找到引发报错的具体位置。
  • 控制台日志:在 App.vuemain.js 中添加 console.log(uni),检查 uni 对象的加载情况。
  • 更新依赖:确保 uni-app 和相关依赖库(如 uview-ui)已更新到最新版本。

6. 示例配置

以下是一个完整的 pages.json 配置示例,包含 easycomleftWindow

{
  "pages": [
    {
      "path": "pages/index/index",
      "style": {
        "navigationBarTitleText": "首页"
      }
    }
  ],
  "easycom": {
    "autoscan": true,
    "custom": {
      "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
    }
  },
  "leftWindow": {
    "path": "pages/left/left",
    "style": {
      "width": "300px"
    }
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!