2017-09-19 4 views
0

私はここhttps://qz.io/wiki/2.0-Raw-Printing#promise-loop 提供されている例を使用してQZトレイで複数のプリンタに印刷しようとしているが、私はrsvp-3.1.0.min.jssha-256.min.jsと含まqz-tray.jsを持ってTypeError: Cannot read property 'sendData' of nullQZトレイ印刷

を言って、エラーを取得しています。 例で提供されているのとまったく同じコードを使用していますが、プリンタ名をインストール済みのものに変更しました。

すべては、私は(それを行うためのデフォルトの方法)別に、各プリンタに印刷しようとすると正常に動作します

私は、ライブラリか何かが欠けていた場合に間違っているか、どのような可能性の任意のアイデア?

これはSafariの上で完全なエラーメッセージであなたに

ありがとう:

TypeError: Cannot read property 'sendData' of null 
    at qz-tray.js:323 
    at lib$rsvp$$internal$$initializePromise (rsvp-3.1.0.min.js:10) 
    at new lib$rsvp$promise$$Promise (rsvp-3.1.0.min.js:10) 
    at Object.promise (qz-tray.js:456) 
    at Object.dataPromise (qz-tray.js:314) 
    at Object.find (qz-tray.js:788) 
    at link (test.html:388) 
    at lib$rsvp$$internal$$tryCatch (rsvp-3.1.0.min.js:10) 
    at lib$rsvp$$internal$$invokeCallback (rsvp-3.1.0.min.js:10) 
    at rsvp-3.1.0.min.js:10 

答えて

0

だから私は問題を発見し、それは私自身の間違いだった、私はQZトレイを開始するのを忘れて、スクリプトが完璧に動作し、ピクセルジョブをレーザープリンタに送信し、Rawジョブをサーマルプリンタに送信することをテストしました。

EDIT:

function promiseLoop() { 
    var data = [ 
     "^XA\n^FO50,50^ADN,36,20^FDPRINT 1 ^FS\n^XZ\n", 
     "^XA\n^FO50,50^ADN,36,20^FDPRINT 2 ^FS\n^XZ\n", 
     "^XA\n^FO50,50^ADN,36,20^FDPRINT 3 ^FS\n^XZ\n", 
     "^XA\n^FO50,50^ADN,36,20^FDPRINT 4 ^FS\n^XZ\n" 
    ]; 
    var configs = [ 
     { "printer": "ZDesigner LP2844-Z" }, 
     { "printer": "ZDesigner LP2844-Z" }, 
     { "printer": "ZDesigner LP2844-Z" }, 
     { "printer": "ZDesigner LP2844-Z" } 
    ]; 
    var chain = []; 

    for(var i = 0; i < data.length; i++) { 
     (function(i_) { 
      //setup this chain link 
      var link = function() { 
       return qz.printers.find(configs[i_].printer).then(function(found) { 
        return qz.print(qz.configs.create(found), [data[i_]]); 
       }); 
      }; 

      chain.push(link); 
     })(i); 
     //closure ensures this promise's concept of `i` doesn't change 
    } 

    //can be .connect or `Promise.resolve()`, etc 
    var firstLink = new RSVP.Promise(function(r, e) { r(); }); 

    var lastLink = null; 
    chain.reduce(function(sequence, link) { 
     lastLink = sequence.then(link); 
     return lastLink; 
    }, firstLink); 

    //this will be the very last link in the chain 
    lastLink.catch(function(err) { 
     console.error(err); 
    }); 
} 
//Always make sure you are establishing a connection before printing 
qz.websocket.connect().then(promiseLoop).catch(errorHandler); 
+0

はあなたが問題を解決するために使用されるコードを提供できるソリューション...例えば'qz.websocket.connect(...)' – tresf

+1

私はここで提供されているのとまったく同じコードを使用しました。https://qz.io/wiki/2.0-Raw-Printing#promise-loop –

+0

ありがとうございます。あなたの投稿はあなたが「qzトレイを開始する」ことを忘れていると言っています。 'qz.websocket.connect(...)'に言及してください。それがあなたが欠けていたコンポーネントであることを思い出してください。この情報が他の人に役立つかもしれないので、私は尋ねます。 – tresf