2017-09-24 19 views
0

PDFを作成し、ノードjsを使用してクライアントに送信するアプリケーションがあります。アプリケーションは、ローカルで完璧に動作しますが、私はデジタルオーシャン、PDFを生成し、エンドポイントでのUbuntuのサーバでそれをホストするときクライアントからサーバーへのPDFの送信がUbuntuサーバーのstream.pipe(res)と連携していません

を作業これは、クライアントにPDFを送信するコードですされていません。

pdf.create(html, options).toStream((err, stream)=> { 
      if (err) { 
       res.json({ 
       message: 'Sorry, we were unable to generate pdf', 
       }); 
      } 
      stream.pipe(res) 

      }); 
クライアント側の

私はエンドポイント

genratePdf({ commit }, data) { 
    axios.post('http://localhost:1337/getpdf', data,{ responseType:'arraybuffer' }).then((response) => { 
     let blob = new Blob([response.data],{type:'application/pdf'}) 
     var link=document.createElement('a'); 
     link.href=URL.createObjectURL(blob); 
     link.download="Report_"+new Date()+".pdf"; 
     link.click(); 


    }, (err) => { 
     console.log(err) 
    }) 

と通信する方法この私はそれをローカルに実行すると、それは完璧に動作します: enter image description here

しかし、私は、他のエンドポイントの作業を液滴Ubuntuのデジタル海にホストが、生成されたPDF 1が動作し、それは私にそのエラーを示し enter image description here

されていないとき、私はそれはアプリがストリームを待たずタイムアウトの問題だと思いますそれをパイプで仕上げる。

答えて

1

pdfの生成に実際にエラーが発生しましたが、エラー処理時に戻ってこないので、まだstream.pipe文が実行されます。

はこれにあなたのコードを変更

pdf.create(html, options).toStream((err, stream)=> { 
    if (err) { 
     console.error(err); 
     return res.json({ 
      message: 'Sorry, we were unable to generate pdf', 
     }); 
    } 
    return stream.pipe(res) 
}); 

お知らせは、私がconsole.error(err);を追加し、それはあなたがさらにデバッグするのに役立つかもしれません。しかし、あなたが使用しているライブラリはPhantomJSを使用していると思いますが、PhantomJSをアーチ用にコンパイルする必要があるため、エラーがある可能性があります。

お試しくださいrm -Rf ./node_modules && npm i