uni-app 原生查件“Dasu-doc_preview”报错

uni-app 原生查件“Dasu-doc_preview”报错

开发环境 版本号 项目创建方式
Windows win10(64位) HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:3.2.16

手机系统:Android

手机系统版本号:Android 11

手机厂商:华为

手机机型:荣耀50、oppoR11s

页面类型:vue

vue版本:vue2

打包方式:云端

App下载地址或H5网址:

https://ide.dcloud.net.cn/build/download/4a306ac0-5eda-11ec-89f0-eda071c512bb

示例代码:

openPdf(pid, fileUrl,biaoshi) {
	var _that = this;
	console.log('fileUrl:' + fileUrl);
	uni.showLoading({
		title: '加载中...'
	});
	uni.downloadFile({
		url: encodeURI(fileUrl),
		success: function(res) {
			var filePath = res.tempFilePath;
			console.log("11111111111111111111111111111" + JSON.stringify(res));
			if (uni.getSystemInfoSync().platform == 'android') {
				const docPreview = uni.requireNativePlugin('Dasu-doc_preview');
				docPreview.openDoc(plus.io.convertLocalFileSystemURL(filePath));
				uni.hideLoading();
				if(biaoshi === 1){
					_that.updateReads(pid);
				} else {
					_that.updateNoticeReads(pid);
				}
			} else {
				uni.openDocument({
					filePath: filePath,
					success: function(res) {
						console.log('打开文档成功');
						uni.hideLoading();
						if(biaoshi === 1){
							_that.updateReads(pid);
						} else {
							_that.updateNoticeReads(pid);
						}
					}
				});
			}
		},
		fail(e) {
			console.log(e)
			uni.hideLoading()
		},
		complete(w) {
			console.log(w)
			uni.hideLoading()
		}
	});
},

操作步骤:

1

预期结果:

1

实际结果:

1

bug描述:

附件预览用了插件“Dasu-doc_preview”,以前项目中好使,现在编译完突然不好用了,错误提示如下:

当前运行的基座不包含原生插件[Dasu-doc_preview],请在manifest中配置该插件,重新制作包括该原生插件的自定义运行基座
13:32:54.613 /storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/doc/uniapp_temp_1639711888101/download/b5ed92e1036b49798b9053b013ab164d.pdf at pages/gzdt/gzdt.vue:639
13:32:54.634 TypeError: Cannot read property 'openDoc' of undefined
13:32:54.654 [Object] {"tempFilePath":"_doc/uniapp_temp_1639711888101/download/b5ed92e1036b49798b9053b013ab164d.pdf","statusCode...}  at pages/gzdt/gzdt.vue:670
14:02:54.152 App Hide at App.vue:145

(ps:文件格式是pdf)

更多关于uni-app 原生查件“Dasu-doc_preview”报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

如果是云插件的话,请查看插件支持的hx版本,或者吧hx的版本降到原来的那个能用的版本再试试

更多关于uni-app 原生查件“Dasu-doc_preview”报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


只能降到上一个版本,不能降到指定版本呀

回复 1***@qq.com: 你可以重新从官网下载啊

根据你的报错信息,问题很明确:当前运行的基座不包含原生插件“Dasu-doc_preview”

错误发生在这一行:

const docPreview = uni.requireNativePlugin('Dasu-doc_preview');

uni.requireNativePlugin 返回了 undefined,导致后续调用 openDoc 方法时报错。

问题原因分析

  1. 插件未正确配置或打包:这是最常见的原因。原生插件需要在 manifest.json 中正确配置,并且必须使用自定义调试基座云打包才能生效。

  2. 运行环境不匹配:你可能正在使用标准运行基座(不包含原生插件)进行调试,或者云端打包时没有正确包含该插件。

解决方案

方案一:使用自定义调试基座(推荐用于开发调试)

  1. 配置插件

    • 打开 manifest.json → App原生插件配置 → 选择云端插件
    • 找到并勾选“Dasu-doc_preview”插件
  2. 制作自定义调试基座

    • 运行 → 运行到手机或模拟器 → 制作自定义调试基座
    • 等待基座制作完成(这需要一些时间)
  3. 使用自定义基座调试

    • 制作完成后,确保运行到“自定义调试基座”
    • 重新运行项目到设备

方案二:云端打包(用于正式发布)

  1. 在manifest中配置插件(同上)
  2. 提交云端打包
    • 发行 → 原生App-云打包
    • 选择Android平台,使用自有证书或测试证书
    • 确保插件已正确勾选
  3. 下载安装测试:打包完成后,下载apk安装测试

方案三:检查插件兼容性

考虑到你提到“以前项目中好使,现在编译完突然不好用了”,还需要检查:

  1. 插件版本:查看插件是否有更新,旧版本可能不兼容新的HBuilderX或Android系统
  2. HBuilderX版本:3.2.16是比较新的版本,确认插件是否支持该版本
  3. Android 11权限:Android 11对文件访问有更严格的限制,确保应用有正确的文件访问权限

临时验证方法

你可以先注释掉Android端的特殊处理,统一使用 uni.openDocument 来测试PDF是否能正常打开:

// if (uni.getSystemInfoSync().platform == 'android') {
// 改为:
if (false) {
回到顶部