添加 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-b​​rowser": "~7.0.0", "@angular/platform-b​​rowser-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-pluginnpm 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时出错

未添加 IONIC 项目中的插件

所有原生 cordova 插件都停止在 Ionic3 上工作

在 Ionic 2 *ngFor 中阻止的 SMS 消息