uni-app项目中引入原生插件后,编译为快手小程序报 t.requireNativePlugin is not a function

uni-app项目中引入原生插件后,编译为快手小程序报 t.requireNativePlugin is not a function

示例代码:

const dcRichAlert = uni.requireNativePlugin('DCloud-RichAlert')

操作步骤:

复现步骤:

  • 在manifest.json中启用原生插件
  • 引入原生插件:const dcRichAlert = uni.requireNativePlugin('DCloud-RichAlert')
  • 运行方式选择快手小程序,然后在快手小程序开发者工具中运行项目,直接报这个错误

预期结果:

不报错

实际结果:

t.requireNativePlugin is not a function

bug描述:

复现步骤:

  • 在manifest.json中启用原生插件
  • 引入原生插件:const dcRichAlert = uni.requireNativePlugin('DCloud-RichAlert')
  • 运行方式选择快手小程序,然后在快手小程序开发者工具中运行项目,直接报这个错误

image


更多关于uni-app项目中引入原生插件后,编译为快手小程序报 t.requireNativePlugin is not a function的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

条件编译部分怎么写的?

更多关于uni-app项目中引入原生插件后,编译为快手小程序报 t.requireNativePlugin is not a function的实战教程也可以访问 https://www.itying.com/category-93-b0.html


没有写条件编译

没有写条件编译,在H5下是不会报错的

回复 葱子: 之前编译到其他小程序平台正常吗?

回复 DCloud_UNI_GSQ: 抱歉,是我的代码有误, uni.requireNativePlugin必须写在条件编译里面

了解了,需要写条件编译,才不会报错

微信小程序也报错,这需要怎么解决

在uni-app中,原生插件(Native Plugin)是为App平台设计的,无法在小程序平台(包括快手小程序)中使用。uni.requireNativePlugin是App端特有的API,用于调用原生模块的功能,而小程序平台没有对应的实现。

当你在代码中调用uni.requireNativePlugin,并编译到快手小程序时,由于该API不存在,会抛出t.requireNativePlugin is not a function错误。这是预期行为,因为小程序环境不支持原生插件。

解决方案:

  1. 条件编译:使用条件编译将原生插件相关代码限制在App平台,避免在小程序平台执行。
    // #ifdef APP-PLUS
    const dcRichAlert = uni.requireNativePlugin('DCloud-RichAlert');
    // #endif
    
    在调用插件的地方也需添加条件编译:
    // #ifdef APP-PLUS
    dcRichAlert.show({ ... });
    // #endif
回到顶部