添加 SMS 插件 Ionic 时类型错误对象不是函数
Posted
技术标签:
【中文标题】添加 SMS 插件 Ionic 时类型错误对象不是函数【英文标题】:Type Error Object not a function when adding SMS plugin Ionic 【发布时间】:2019-05-06 15:17:35 【问题描述】:尝试使用
cordova-sms-插件
在应用程序中添加短信功能。 我已经完成了文档中提到的安装-> https://ionicframework.com/docs/native/sms/
我添加了一行
import SMS from '@ionic-native/sms';
但是当我添加时
public sms: SMS
在构造函数参数中,它在 JS 控制台中抛出以下错误并且页面停止工作。
core.js:12501 ERROR 错误:未捕获(在承诺中):TypeError: Object(...) is not a function TypeError: Object(...) 不是函数 在 index.js:93 在 Module../node_modules/@ionic-native/sms/index.js (index.js:142) 在 webpack_require (bootstrap:83) 在 Module../src/app/pages/sendtext/sendtext.page.ts (pages-sendtext-sendtext-module.js:92) 在 webpack_require (bootstrap:83) 在 Module../src/app/pages/sendtext/sendtext.module.ts (pages-sendtext-sendtext-module.js:18) 在 webpack_require (bootstrap:83) 在 $_lazy_route_resource 惰性命名空间对象:32 在 ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388) 在 Object.onInvoke (core.js:14060) 在 resolvePromise (zone.js:814) 在 resolvePromise (zone.js:771) 在 zone.js:873 在 ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421) 在 Object.onInvokeTask (core.js:14051) 在 ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420) 在 Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188) 在 drainMicroTaskQueue (zone.js:595)
这只是一个基本的离子安装,唯一添加的插件是 SMS 插件。 任何帮助表示赞赏。
下面是我在 package.json 文件中的依赖部分。
“依赖”: "@angular/common": "~7.0.0", "@angular/core": "~7.0.0", "@angular/forms": "~7.0.0", "@angular/http": "~7.0.0", "@angular/platform-browser": "~7.0.0", "@angular/platform-browser-dynamic": "~7.0.0", "@angular/router": "~7.0.0", "@ionic-native/core": "5.0.0-beta.21", "@ionic-native/sms": "^4.18.0", "@ionic-native/splash-screen": "5.0.0-beta.21", "@ionic-native/status-bar": "5.0.0-beta.21", "@ionic/angular": "4.0.0-beta.16", “cordova-android”:“7.1.4”, “cordova-ios”:“4.5.5”, "cordova-plugin-device": "^2.0.2", "cordova-plugin-ionic-keyboard": "^2.1.3", "cordova-plugin-ionic-webview": "^2.2.5", "cordova-plugin-splashscreen": "^5.0.2", "cordova-plugin-statusbar": "^2.4.2", "cordova-plugin-whitelist": "^1.3.3", “cordova-sms-plugin”:“0.1.13”, "core-js": "^2.5.4", "rxjs": "~6.3.3", “zone.js”:“~0.8.26” ,
【问题讨论】:
我希望你在 app.Module 中添加了这个模块。 添加了行 import SMS from '@ionic-native/sms';在 app.module 中。没有将它添加到任何提供者或任何东西。 【参考方案1】:添加类似...的模块
import SMS from '@ionic-native/sms';
@NgModule(
providers: [
SMS
]
)
【讨论】:
仍然收到错误提示 index.js:93 Uncaught TypeError: Object(...) is not a function 尝试使用ionic serve -l
重建开发环境
我已经从每个页面中删除了插件引用。仅在 app.module 页面中有导入,并且在提供者列表中有 SMS。我仍然得到同样的错误。但是应用的首页根本没有加载。
请确保您遵循这些步骤,1. 添加带有ionic cordova plugin add cordova-sms-plugin
和npm install --save @ionic-native/sms
的短信插件 2. 在app.module
中添加sms
,我在上面的答案中提到了 3. 然后是相关页面你需要添加像private sms: SMS
这样的构造函数 4. 现在有了this.sms
你可以使用短信插件的所有方法
全新安装。 npm install 命令给出了这个警告。 npm WARN @ionic-native/sms@4.18.0 需要 @ionic-native/core@^4.11.0 的对等点,但没有安装。您必须自己安装对等依赖项。但是,“@ionic-native/core”:“5.0.0-beta.21”,在 package.json 文件中。【参考方案2】:
尝试添加这个
npm i rxjs@6 rxjs-compat@6 promise-polyfill --save
【讨论】:
【参考方案3】:好的,我也遇到了同样的问题 在我的 package.json 中,我只是更改了 sms 插件版本并将其编写为与 ionic-native/core 相同,然后执行命令 npm install ,当我再次为我的项目提供服务时,它解决了我的问题
"@ionic-native/core": "^5.0.0",
"@ionic-native/sms": "^5.0.0",
也在你的模块中
import SMS from '@ionic-native/sms/ngx';
@NgModule(
providers: [
SMS
]
)
【讨论】:
以上是关于添加 SMS 插件 Ionic 时类型错误对象不是函数的主要内容,如果未能解决你的问题,请参考以下文章
获取错误对象(...)的 Ionic App Availability 插件不是函数
将OneSignal插件添加到Ionic App后生成APK时出错