Ionic 3集成PayPal报错:无法解析PayPalPayment所有参数
解决Ionic 3中PayPalPayment参数解析错误的问题
这个Can't resolve all parameters for PayPalPayment: (?, ?, ?, ?, ?)错误其实很常见,本质是Angular把PayPalPayment当成了需要依赖注入的服务来处理,但它实际上只是一个用来构建支付请求的普通类,根本不需要通过DI系统实例化。大概率是你不小心在配置中把它当成服务注册了,或者导入/使用方式不对。
下面是一步步的解决方法:
1. 先确认导入是否正确
在你的组件文件顶部,必须从@ionic-native/paypal正确导入所有需要的类,别搞错路径:
import { PayPal, PayPalPayment, PayPalConfiguration } from '@ionic-native/paypal';
2. 检查NgModule的Providers配置
打开你的app.module.ts(如果是页面模块的话就对应页面的module文件),只把PayPal添加到providers数组里,绝对不要加PayPalPayment——它不是服务,不需要注册:
import { PayPal } from '@ionic-native/paypal'; @NgModule({ declarations: [ // 你的组件、页面等 ], imports: [ // 你需要导入的模块,比如IonicPageModule之类的 ], providers: [ PayPal, // 其他你的应用服务,别放PayPalPayment在这里 ] }) export class AppModule {}
3. 组件构造函数别乱注入
确保你的组件构造函数里只注入PayPal服务,PayPalPayment是直接new出来的,不需要注入:
constructor(private payPal: PayPal) { }
4. 确认PayPalPayment的参数是否完整
看错误提示里的5个问号,说明PayPalPayment的构造函数期望5个参数(最后一个是可选的支付详情对象)。你现在只传了4个,虽然有些版本里最后一个参数是可选的,但为了稳妥,你可以补充完整,比如:
let payment = new PayPalPayment('3.33', 'USD', 'Product Description', 'sale', { shipping: '0.00', tax: '0.00' });
最后再检查插件安装是否正确
Ionic 3对应的是Ionic Native 4.x版本,别装错版本了:
# 先装Cordova原生插件 ionic cordova plugin add cordova-plugin-paypal # 再装对应版本的Ionic Native包装器 npm install @ionic-native/paypal@4
按照这些步骤来,应该就能解决这个参数解析的问题了。
内容的提问来源于stack exchange,提问作者Pankaj Dadure
相关产品推荐
相关产品推荐

