uni-app Hello模板下easycom配置与leftwindow冲突报错:uni is not defined
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页面显示正常。
类似问题,在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.js
或 App.vue
在 main.js
或 App.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. 调试和排查
如果以上方法无法解决问题,可以尝试以下步骤:
- 注释代码:逐步注释
leftWindow
或easycom
相关代码,找到引发报错的具体位置。 - 控制台日志:在
App.vue
或main.js
中添加console.log(uni)
,检查uni
对象的加载情况。 - 更新依赖:确保 uni-app 和相关依赖库(如
uview-ui
)已更新到最新版本。
6. 示例配置
以下是一个完整的 pages.json
配置示例,包含 easycom
和 leftWindow
:
{
"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"
}
}
}