亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

類型錯誤:無法讀取未定義的 Scanner.js 屬性“掃描”

類型錯誤:無法讀取未定義的 Scanner.js 屬性“掃描”

我正在嘗試集成scanner-js到我的反應應用程序中,但收到錯誤TypeError: Cannot read property 'scan' of undefined。您可以找到以下代碼:
查看完整描述

2 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

import { scanner } from 'scanner-js';

class Home extends React.Component {

  constructor(props) {

    super(props);


    this.state = {};

  }


  scan = () => {

    scanner.scan(this.displayImagesOnPage, {

      output_settings: [

        {

          type: 'return-base64',

          format: 'jpg',

        },

      ],

    });

  };


  displayImagesOnPage(successful, mesg, response) {

    if (!successful) {

      // On error

      console.error('Failed: ' + mesg);

      return;

    }

    if (

      successful &&

      mesg != null &&

      mesg.toLowerCase().indexOf('user cancel') >= 0

    ) {

      // User cancelled.

      console.info('User cancelled');

      return;

    }

    var scannedImages = scanner.getScannedImages(response, true, false); // returns an array of ScannedImage

    for (

      var i = 0;

      scannedImages instanceof Array && i < scannedImages.length;

      i++

    ) {

      var scannedImage = scannedImages[i];

      var elementImg = scanner.createDomElementFromModel({

        name: 'img',

        attributes: {

          class: 'scanned',

          src: scannedImage.src,

        },

      });

    }

  }

  render() {

    return (

      <div>

        <button type="button" onClick={this.scan}>

          Scan

        </button>

      </div>

    );

  }

}


export default Home;

當我將鼠標懸停在該scanner對象上時,會顯示以下內容,但我不知道為什么它會拋出未定義的錯誤。

https://img1.sycdn.imooc.com//65152dd600016aed13660771.jpg

有人可以幫我找到問題嗎?



查看完整回答
反對 回復 2023-09-28
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

這是因為你導入錯了。如果您在 npm 上檢查包,您可以看到沒有導出的模塊,因此您無法導入單個導出(import {scanner} from 'scanner-js'),也無法導入默認導出(import scanner from 'scanner-js)。

您只需導入整個模塊即可產生副作用,并且它將scannerwindow對象添加一個全局變量。

import 'scanner-js';


console.log(typeof scanner);

// => object


console.log(typeof scanner.scan);

// => function

如果您使用 ESLint,則需要添加scanner為全局變量。

CodeSandbox鏈接:https://codesandbox.io/s/scanner-js-hcz2j


查看完整回答
反對 回復 2023-09-28
  • 2 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號