MFP8 Angular7+Cordova混合应用证书钉扎调用方法报then属性未定义错误
MFP 8 + Angular 7 + Cordova 证书钉扎报错解决方案
报错TypeError: Cannot read properties of undefined (reading 'then')的核心原因是WL.Client.pinTrustedCertificatePublicKey方法未返回Promise对象,可按以下步骤排查解决:
- 修正证书存放路径拼写错误
安卓原生项目的资源目录正确名称为assets,你当前填写的assests多了一个字符s,属于拼写错误,会导致MFP无法读取证书文件,部分版本插件找不到资源时会直接返回空值而非Promise对象。请将证书存放路径调整为assets/certificates/mycer.cer。 - 调整API调用写法适配MFP插件版本
多数旧版本MFP 8 Cordova插件的证书钉扎方法不支持Promise链式调用,需直接传入成功、失败回调作为入参,同时需确保调用时机在deviceready事件触发之后,修改后的代码示例如下:declare var WL: any; ngOnInit() { document.addEventListener('deviceready', () => { WL.Client.pinTrustedCertificatePublicKey( 'mycer.cer', // 成功回调 () => { console.log("success pinning"); }, // 失败回调 (error) => { console.log("failure pinning", error); } ); }, false); } - 验证MFP插件安装正确性
运行命令cordova plugin list确认已安装cordova-plugin-mfp插件,且插件版本和你后端部署的MFP 8服务器大版本匹配。若版本不匹配,可卸载后重装对应版本插件:cordova plugin remove cordova-plugin-mfp cordova plugin add cordova-plugin-mfp@<对应版本号> - 验证证书格式合规
MFP证书钉扎要求使用DER编码格式的CER证书,若你当前使用的是PEM格式证书,可通过openssl命令转换格式:openssl x509 -in mycer.pem -outform der -out mycer.cer
内容的提问来源于stack exchange,提问作者helloJT
相关产品推荐
相关产品推荐

