【问题标题】:I'm having the following error with my ionic application when working with the BarcodeScanner使用 BarcodeScanner 时,我的 ionic 应用程序出现以下错误
【发布时间】:2019-02-11 19:02:55
【问题描述】:

我正在开发一个应用程序来读取我正在使用 BarcodeScanner 的代码,但是当我在我的设备上执行该应用程序时,我收到以下错误

**

**使用 ionic DevApp 错误运行时错误对象(_WEBPACK_IMPORTED_MODULE_1_ionic_native_core_[“cordova”])在我的 iphone 6 上运行它时出错。 (在 'Object(_WEBPACK_IMPORTED_MODULE_1_ionic_native_core_["cordova"])(this, "scan", {"callbackOrder":"reverse"}, arguments)', 'Object(_WEBPACK_IMPORTED_MODULE_1_ionic_native_core_["cordova"])' 是 Object 的一个实例)

在 ionic serve 中执行时显示的错误,ERROR TypeError: Object(...) is not a function at BarcodeScanner.scan (index.js:31) at MenuPage.webpackJsonp.101.MenuPage.scanQR (menu .ts:53) 在 Object.eval [as handleEvent] (MenuPage.html:17) 在 handleEvent (core.js:13589) 在 callWithDebugContext (core.js:15098) 在 Object.debugHandleEvent [as handleEvent] (core.js :14685) 在 dispatchEvent (core.js:10004) 在 core.js:10629 在 HTMLButtonElement。 (platform-b​​rowser.js:2628) 在 t.invokeTask (polyfills.js:3) **

一开始我遇到了我的 app-module.ts 没有的错误 认出我是 BarcodeScanner,因为在提供程序中调用它时 我,TS2322:类型“BarcodeScannerOriginal”不可分配给类型 “提供者”。类型“BarcodeScannerOriginal”不可分配给类型 '工厂提供者'。类型中缺少属性“提供” 'BarcodeScannerOriginal'

** 菜单.html

<ion-header class="toolbar">
  <ion-navbar>
    <ion-title>Scan</ion-title>
  </ion-navbar>

</ion-header>

<ion-content padding class="Scan">
  <div class="row">
    <div class="col">
      <h2>Scan your QR Code Here</h2>
    </div>
    <div class="col">
      <h3>{{eventTitle}}</h3>
    </div>
  </div>
  <button ion-button block color="secondary" class="Scan-button" (click)="scanQR()" [disabled]="loading">{{buttonText}}</button>
</ion-content>

菜单.ts

import { Component } from '@angular/core';
import {Platform} from "ionic-angular";
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';
import { ToastController } from 'ionic-angular';
import { BarcodeScanner, BarcodeScannerOptions } from '@ionic-native/barcode-scanner/ngx';


/**
 * Generated class for the MenuPage page.
 *
 * See https://ionicframework.com/docs/components/#navigation for more info on
 * Ionic pages and navigation.
 */

@IonicPage()
@Component({
  selector: 'page-menu',
  templateUrl: 'menu.html',
})
export class MenuPage {

  public scannedText: string;
  public buttonText: string;
  public loading: boolean;
  private eventId: number;
  public eventTitle: string;

  num: string;

  // @ts-ignore
  constructor(private _nav: NavController,
              private _navParams: NavParams,
              private _barcodeScanner: BarcodeScanner) {



  }
  ionViewDidLoad() {
    this.eventId = this._navParams.get('eventId');
    this.eventTitle = this._navParams.get('eventTitle');

    this.buttonText = "Scan";
    this.loading = false;
  }

  public scanQR() {
    this.buttonText = "Loading..";
    this.loading = true;

    this._barcodeScanner.scan().then((barcodeData) => {
      if (barcodeData.cancelled) {
        console.log("User cancelled the action!");
        this.buttonText = "Scan";
        this.loading = false;
        return false;
      }
      console.log("Scanned successfully!");
      console.log(barcodeData);
      this.goToResult(barcodeData);
    }, (err) => {
      console.log(err);
    });
  }

  private goToResult(barcodeData) {
    this._nav.push(ScanResultPage, {
      scannedText: barcodeData.text
    });
  }
}

应用模块.ts

import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import {MenuPage} from "../pages/menu/menu";
import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
import { HttpClientModule } from '@angular/common/http';

import { FormsModule } from '@angular/forms';
import {HttpModule} from "@angular/http";


// @ts-ignore
@NgModule({
  declarations: [
    MyApp,
    HomePage,
    MenuPage
  ],
  imports: [
    BrowserModule, HttpClientModule,
    IonicModule.forRoot(MyApp),
    HttpModule
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
    MenuPage
  ],
  providers: [
    StatusBar,
    SplashScreen,
    BarcodeScanner,
    {provide: ErrorHandler, useClass: IonicErrorHandler}




  ]


})
export class AppModule {}

enter image description here

【问题讨论】:

  • 目前尚不清楚您得到的确切错误是什么。也许edit这个问题并明确说明您收到的信息。
  • 执行操作时收到的错误,单击扫描按钮,这是我在附件图像中显示的错误。朋友没有告诉我任何其他错误,这就是我注意力不集中的原因。
  • 很少有人会访问外部图像链接,尤其是对于错误消息,它应该作为可搜索、可复制的文本出现在问题中。修正这个问题的格式,以便清楚什么是输出和什么是解释。提供完整的错误消息或堆栈跟踪。展示你的研究。这一切都在How to Ask 中进行了解释。
  • 使用 ionic DevApp 错误运行时错误对象(_WEBPACK_IMPORTED_MODULE_1_ionic_native_core_["cordova"]) 在我的 iphone 6 上运行它时出错。 (在 'Object(_WEBPACK_IMPORTED_MODULE_1_ionic_native_core_["cordova"])(this, "scan", {"callbackOrder":"reverse"}, arguments)', 'Object(_WEBPACK_IMPORTED_MODULE_1_ionic_native_core_["cordova"])' 是 Object 的一个实例)
  • 在 ionic serve 中执行时显示的错误,ERROR TypeError: Object(...) is not a function at BarcodeScanner.scan (index.js:31) at MenuPage.webpackJsonp.101. MenuPage.scanQR (menu.ts:53) at Object.eval [as handleEvent] (MenuPage.html:17) at handleEvent (core.js:13589) at callWithDebugContext (core.js:15098) at Object.debugHandleEvent [as handleEvent ] (core.js:14685) at dispatchEvent (core.js:10004) at core.js:10629 at HTMLButtonElement. (platform-b​​rowser.js:2628) at t.invokeTask (polyfills.js:3)

标签: ionic-framework


【解决方案1】:

我猜你使用的是 Ionic 3,但你使用的是 Ionic 4 支持的原生插件版本。

解决方案

卸载cordova和ionic原生插件

$ionic cordova plugin remove phonegap-plugin-barcodescanner
$npm uninstall @ionic-native/barcode-scanner

安装版本 4

$ ionic cordova plugin add phonegap-plugin-barcodescanner
$ npm install --save @ionic-native/barcode-scanner@4

并且不要在导入末尾附加 ngx

import { BarcodeScanner } from '@ionic-native/barcode-scanner';

注意

如果您使用的是 Ionic 3,请尝试遵循 Ionic v3 指南而不是最新指南

Ionic v3 指南https://ionicframework.com/docs/v3/native/barcode-scanner/

完整的解释你可以在这里找到我的另一个答案:https://stackoverflow.com/a/54474247/6617276

【讨论】:

  • 你能接受这个答案作为正确答案吗?
猜你喜欢
  • 1970-01-01
  • 2019-03-20
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多