uni-app中getCurrentPages is not a function

uni-app中getCurrentPages is not a function

信息类别 详细信息
产品分类 uniapp/App
PC开发环境 Windows
PC版本号 Windows 10 22H2
HBuilderX 正式
HBuilderX版本号 4.08
手机系统 Android
手机版本号 Android 14
手机厂商 模拟器
手机机型 模拟器
页面类型 vue
vue版本 vue2
打包方式 离线
项目创建方式 HBuilderX

示例代码:

onLoad() {
    this.pagesList = getCurrentPages();
    console.log('pagesList', this.pagesList);
},

操作步骤:

直接运行

预期结果:

获取当前页列表实例

实际结果:

js报错:getCurrentPages is not a function

bug描述:

uniapp默认模板创建的项目中不管是把pages/index/index改成.vue或.nvue运行安卓模拟器后,代码中调用getCurrentPages都回报错getCurrentPages is not a function,我换了好几个模拟器都一样出错。


更多关于uni-app中getCurrentPages is not a function的实战教程也可以访问 https://www.itying.com/category-93-b0.html

64 回复

更新:最新的 HBuilderX alpha 4.26 已解决此问题。
之前提供的替换文件不完整,导致 HBuilderX 正式版还会有问题,在下个版本发布之前,请参考下面解决方案。
到HBX根目录 /Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-debugger/node_modules/@dcloudio/uni-debugger/frontend/public/runtime 替换如下文件
备注 vue3+cli 项目,请替换项目依赖 node_modules vue3+HBuilderX 项目,找到HBuilderX的根目录,快速找到HBuilderX根目录的方式,帮助–>自述文件。 然后在右键选择 ,在外部资源管理器打开,即可打开HBuilderX路径。

更多关于uni-app中getCurrentPages is not a function的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uniapp VUE3 setup组合式写法 真机调试也报 getCurrentPages is not a function !控制台没有报错 ,控制台点真机调试报错。

cli创建的如何解决呢,现在还是有这个问题

cli的项目替换完文件也不行,还是报错

4.15正式版依旧有这个问题

此解决方案,不可用呀

回复 1***@qq.com: 升级最新HBuilderX Alpha版本试试。

Alpha版本 可以了

正式版本4.24 还是有这个问题

回复 2***@qq.com: 同 4.24,今天刚从 3.99 升级过来,问题仍然存在

回复 2***@qq.com: 我发现调试模式下,getApp 才是真正的 getCurrentPages

回复 2***@qq.com:

回复 8***@qq.com: 你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

回复 c***@gmail.com: 你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

回复 9***@qq.com: 你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

回复 7***@qq.com: 你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

回复 2***@qq.com: 你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

回复 2***@qq.com: 你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

直接输出日志里的确没问题,但是打开调试工具回报这个错误,难道是调试工具有问题


你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

感谢反馈,目前通过你的提供的信息调试过后在调试工具下确实复现了该问题

vue2 hbx4.0.8刚测试了下,没发现问题 <template>
<view>
<button @click=“open”>点击</button>

</view>  
</template> <script> export default { data() { return {
            pagesList: []  
        };  
    },  
    onLoad() {  
        this.pagesList = getCurrentPages();  
        console.log('pagesL111111ist', this.pagesList.length);  
    },  
    methods: {  

        open() {  

            this.pagesList = getCurrentPages();  
            console.log('pages22222222222222List', this.pagesList.length);  
        }  
    }  
}  

</script>

在输出日志里的确没问题,但是打开调试工具回报这个错误,难道是调试工具有问题

我也遇到了,nvue调试就会出现这个问题TypeError: getCurrentPages is not a function

解决了,降低hbuildx版本就好了,之前用的是4.08,现在回到了3.9.4,也许其他低版本也行

你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

5.23还是有这个问题

你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

咋解决的呀,我这个也是出现这问题呢

这个问题还没有解决吗

升级最新版的Alpha版

回复 DCloud_UNI_CHB: 更新到最新的Alpha版仍然存在此问题。

这个问题 开启调试工具 时候 app调试开启的时候 也是这样的报错

你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

最新版任然有这个问题

你好,你的getCurrentPage()在哪个平台用的?vue2还是vue3?

回复 DCloud_UNI_yuhe: vue2

回复 xiaom873938838: 你好,你是在哪个位置使用的,可以私信发一个能复现的项目吗?

vue2代码,mac上运行在iOS的模拟器上,还是Android真机都有问题

你好,可以私信我发一个可以复现的项目吗?

降低Hbuilder版本到3.94可以运行

回复 h***@yeah.net: 您好,在哪里可以复现?

回复 DCloud_UNI_yuhe: 直接运行token验证失败要跳到登录就会

你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

4.24 问题仍然存在,四个月了!!!

你好,你是在哪里出现的这个问题?提供一个可以复现的项目

回复 DCloud_UNI_yuhe: 跟工程没关系吧,发现调试模式下 global.getApp 和 global.getCurrentPages 对调了。你发的wrapper.js 和我本地的文件是一致的。 有没有可能是老版本 HbuilderX 3.99 缓存的问题? 试试先清除缓存后再重装 HbuilderX?

回复 2***@qq.com: 如果不能复现问题,我们也不好修复。您可以尝试一下重装hx

回复 DCloud_UNI_yuhe: 完全删干净后还是一样,我建了新项目,uniapp 模板+vue3,再 man.js 里打印 getCurrentPages,getApp 的结果是: {on: ƒ, once: ƒ, off: ƒ, emit: ƒ, subscribe: ƒ, …} ƒ Wo(){let e=[];return Oi.forEach(t=>{t.$.isTabBar?t.$.isActive&&e.push(t):e.push(t)}),e} “uni-app:///main.js:40” 前面的是 getApp,后面的是 getCurrentPages !!!注意,是调试模式,这里不能发图片,看我后面发的图片,

回复 2***@qq.com: 你好,你的意思就是说,原本是getCurrentPages的地方换成了getApp,导致出现了not a function这个错误?

回复 DCloud_UNI_yuhe: 调试模式下,global.getCurrentPages 和 global.getApp 互换了。你看我后面的发的留言,有测试过程截图 也就是说在 main.js 中加入下面的代码,并且将所有 getCurrentPages 改为 global.getCurrentPages 才能正常运行 if (typeof global.getCurrentPages !== ‘function’) {

完全删干净后还是一样,我建了新项目,uniapp 模板+vue3,再 man.js 里打印 getCurrentPages,getApp 的结果是:
{on: ƒ, once: ƒ, off: ƒ, emit: ƒ, subscribe: ƒ, …}
ƒ Wo(){let e=[];return Oi.forEach(t=>{t.$.isTabBar?t.$.isActive&&e.push(t):e.push(t)}),e} “uni-app:///main.js:40”
前面的是 getApp,后面的是 getCurrentPages
!!!注意,是调试模式,这里不能发图片,看我后面发的图片,
1 秒前


特别感谢认真排查

你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

回复 DCloud_UNI_OttoJi: 那就不知道是什么问题咯,我是 mac OS,HbuildX4.24,真机是 iPhone 12,我在 main.js 里重新赋值了 global.getApp和 global.getCurrentPages 临时解决了。

回复 2***@qq.com: 看最新的置顶评论操作

最新版本问题仍然存在

你好,之前回复内容不完整,我重新补充了内容。经过测试 HBuilderX 4.24 运行vue2/vue3+options/vue3+setup 都正常,请参考说明重新试一下,下个版本会修复此问题。

macos HBuilderX 4.24 还是存在这个问题啊,不开调试没问题,一开调试就报这个……

你好,是 4.26 处理的,请使用高于 4.26 的版本,目前在 alpha 上存在

哦,我就说更新了之后调试页面的console里面打印这个函数提示没有呢

uni-app 中,getCurrentPages 是一个用于获取当前页面栈的函数。如果你遇到 getCurrentPages is not a function 的错误,可能是由于以下几个原因:

1. 调用时机不正确

getCurrentPages 只能在页面生命周期内调用,比如在 onLoadonShowonReady 等生命周期函数中调用。如果你在非页面生命周期中调用(例如在组件的 createdmounted 中),可能会导致这个错误。

解决方法: 确保在页面生命周期内调用 getCurrentPages

export default {
  onLoad() {
    const pages = getCurrentPages();
    console.log(pages);
  }
}

2. 运行环境问题

getCurrentPagesuni-app 提供的方法,只能在 uni-app 的运行环境中使用。如果你在非 uni-app 环境(例如普通的 H5 页面)中调用,可能会出现这个错误。

解决方法: 确保代码运行在 uni-app 的环境中。

3. 版本问题

如果你使用的是较旧版本的 uni-app,可能会存在 getCurrentPages 方法不可用的情况。

解决方法: 更新 uni-app 到最新版本。

4. 使用方式错误

确保你正确使用了 getCurrentPages 方法。getCurrentPages 是一个全局方法,不需要通过 this 调用。

正确用法:

const pages = getCurrentPages();
console.log(pages);
回到顶部