【问题标题】:Uncaught (in promise): TypeError: Cannot read property 'init' of undefined [duplicate]未捕获(承诺):TypeError:无法读取未定义的属性“init”[重复]
【发布时间】:2017-12-24 09:52:17
【问题描述】:

我试图让QuggaJS 在我的 Ionic3/Angular4 应用程序中工作。 但我总是得到错误:

Uncaught (in promise): TypeError: Cannot read property 'init' of undefined TypeError: Cannot read property 'init' of undefined at new Scanner 

我真的不知道为什么Quarra是未定义的,因为我正常将它导入到我的项目中? 首先我做了:

npm install quagga

然后它确实将它导入到我的项目中,如下所示:

import * as Quagga from 'quagga';

但我仍然收到错误消息。

我的 Typescript 代码如下所示:

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import * as Quagga from 'quagga';

@Component({
  selector: 'page-scanner',
  templateUrl: 'scanner.html',
})
export class Scanner {

  constructor(public navCtrl: NavController,
    public navParams: NavParams) {
      Quagga.init({
          inputStream : {
              name : "Live",
              type : "LiveStream",
               // Or '#yourElement' (optional)
              target: document.querySelector('#scanner')
          },
          decoder : {
           //Change Reader for the right Codes
           readers: [ "code_128_reader",
                      "ean_reader",
                      "ean_8_reader",
                      "code_39_reader",
                      "code_39_vin_reader",
                      "codabar_reader",
                      "upc_reader",
                      "upc_e_reader",
                      "i2of5_reader" ],
          }
        }, function(err) {
            if (err) {
                console.log(err);
                return
            }
            console.log("Initialization finished. Ready to start");
            Quagga.start();
        });
  }
}

我真的希望你们能解决这个问题!感谢您的帮助

【问题讨论】:

  • 如果您使用的是import 的环境,为什么还要使用require
  • 哦,抱歉没有删除那个。我只尝试过它是否会改变某些东西,但它不会。
  • example in the documentationimport Quagga from 'quagga';,而不是 import * as Quagga from 'quagga';。你为什么用后者?
  • 我想其他人也遇到过同样的问题,你可以参考stackoverflow的线程stackoverflow.com/questions/42555644/…
  • 由于您已接受答案,因此无法添加答案,但再次分享链接以供参考stackoverflow.com/questions/42555644/… 如果有帮助,您可以点赞评论:)

标签: javascript angular typescript ionic-framework typeerror


【解决方案1】:

如果您使用 Angular-CLI,请将其添加到您的 scripts 数组中(对于 webpack 也是如此):

"scripts": [
        "node_modules/path/qugga.min.js"
      ],

添加这个:

declare var Quagga:any;

导致:

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';

import * as Quagga from 'quagga';

@Component({
  selector: 'page-scanner',
  templateUrl: 'scanner.html',
})
export class Scanner {

  constructor(public navCtrl: NavController,
    public navParams: NavParams) {}

  ngOnInit() {
      Quagga.init({

另外,如果这不起作用,请将您的 Quagga.init({ 移动到 ngOnInit(),以确保组件已完全加载。

【讨论】:

  • 请使用 ngOnInit 更新您的代码,因为我需要它。另请注意,我需要两个 import Quagga from 'quagga';并声明 var Quagga:any;让它工作。
  • @lukay97 太棒了,我很高兴结果很好。我更新了我的答案,希望它可以帮助其他有同样问题的人!干杯!
猜你喜欢
  • 2017-03-04
  • 2019-05-16
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 2020-09-24
  • 1970-01-01
相关资源
最近更新 更多