Capacitor/Ionic4:带 plugin_not_installed 的 BarcodeScanner

Capacitor/Ionic4: BarcodeScanner with plugin_not_installed

我在将 BarcodeScanner 添加到我的 android 构建时遇到问题,错误是 plugin_not_installed

应用程序编译没有任何错误,但在运行时输出错误。我也试过 removing/adding android 文件夹,但还是不行。

有人知道是什么原因造成的吗?

安装:

npm install --save @ionic-native/barcode-scanner@5.0.0-beta.21

app.module.ts:

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

@NgModule({
    ...

    providers: [
        ...
        BarcodeScanner
        ...
    ]
    ...
})

home.ts:

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

@Component({
  ...
})
export class HomePage implements OnInit {
  private options: BarcodeScannerOptions;

  constructor(private barcodeScanner: BarcodeScanner) {}

  scan() {
    this.options = {
      prompt: "Scan your qrcode "
    }
    this.barcodeScanner.scan(this.options).then((barcodeData) => {
      ...
    }, err => {
      console.log("Error occured : " + err);
    });
  }//func scan

}//class HomePage

======

依赖关系:

您刚刚为插件安装了 ionic native wrapper,但没有安装插件

科尔多瓦

ionic cordova plugin add phonegap-plugin-barcodescanner

对于电容器

npm install phonegap-plugin-barcodescanner

需要注意的重要一点是,如果您发出不带“--save”的命令,有时 package.json 不会更新。例如,npm install phonegap-plugin-barcodescanner 没有更新 config.xml 和 package.json。这可能会在收到 "Plugin_not_installed" 错误时浪费您的大量时间。

按照以下步骤操作,它应该可以在 android 手机上无缝运行。

npm install @ionic-native/barcode-scanner --save
npm install phonegap-plugin-barcodescanner --save
npx cap sync

然后 运行 它在 android,

ionic capacitor run android. 

请注意,以上解决方案仅适用于出现错误 plugin_not_installed。

示例执行代码:

declare let window: any;

  scan(){
    window.cordova.plugins.barcodeScanner.scan(
      result => console.log(result),
      err => this.presentAlert(err),
      {
        showTorchButton: true,
        prompt: "Scan your code",
        formats: "QR_CODE",
        resultDisplayDuration: 0
      }
    );
  }

谢谢

当我遇到这个问题时,我正在使用带电容器的实时重载。在这里尝试解决方案没有成功之后,我只需要重建应用程序(当然在终端 ctrl + c 之后取消 运行 应用程序):

 ionic cap run android -l --external

然后所有插件 运行 成功。我不知道每次添加插件时是否都必须这样做,但现在可以使用