jsonオブジェクトを取得してWebページをレンダリングし、Nightmare.jsの電子ブラウザを介してpdfに出力する空白のWebジョブを実行しようとしています。Nightmare.jsがAzure Webjobで動作しない
これをローカルで実行すると完全に動作しますが、私がazure webjobで実行すると完了しません。
2つのconsole.log
文がログに出力されますが、nightmare.js呼び出しから何も出力できないため、電子ブラウザウィンドウを表示できないため、何が問題になるのか分かりません。
スクリプト内にウェブサーバーもあります.jsonオブジェクトでリクエストを受け取り、それをcreatePage
に渡しているようです。
index.htmlファイルが正しいディレクトリにあることを確認しました。誰が何が間違っているかも知っていますか?
var Nightmare = require('nightmare'),
http = require('http');
function createPage(o, final) {
var start = new Date().getTime();
var page = Nightmare({
//show: true, //uncomment to show electron browser window
//openDevTools: { mode: 'detach'}, //uncomment to open developer console ('show: true' needs to be set)
gotoTimeout: 300000, //set timeout for .goto() to 2 minutes
waitTimeout: 300000, //set timeout for .wait() to 5 minutes
executionTimeout: 600000 //set timeout for .evaluate() to 10 minutes
})
.goto('file:\\\\' + __dirname + '\\index.html');
page.wait("#ext-quicktips-tip") //wait till HTML is loaded
.wait(function() { // wait till JS is loaded
console.log('Extjs loaded.');
return !!(Ext.isReady && window.App && App.app);
});
console.log("CreatePage()1");
page.evaluate(function (template, form, lists, printOptions) {
App.pdf.Builder.create({
template: template,
form: form,
lists: lists,
format: o.printOptions.format,
});
console.log('Create done');
}, template, form, o.lists, printOptions);
console.log("CreatePage()2");
page.wait(function() {
console.log('Content created. ' + App.pdf.Builder.ready);
return App.pdf.Builder.ready;
})
.pdf(o.outputDir + form.filename, { "pageSize": "A4", "marginsType": 1 })
.end()
.then(function() {
console.log('Pdf printed, time: ' + (new Date().getTime() - start)/1000 + ' seconds');
final(true);
})
.catch(function (err) {
console.log('Print Error: ' + err.message);
});
}
リックは彼の答えで述べたように、これは現在動作しません
を解決! この文書では、webjobsサンドボックスの現在の状態を示しています。
https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox
また、私の問題に関連する次の段落があります:HTMLから
PDF生成を
HTMLを変換するために使用される複数のライブラリがあります。 PDFへ多くのWindows/.NET固有のバージョンはIE APIを活用しているため、User32/GDI32を幅広く活用しています。これらのAPIは、計画に関係なくサンドボックス内で大きくブロックされているため、これらのフレームワークはサンドボックスでは機能しません。
User32/GDI32を幅広く利用しないフレームワーク(wkhtmltopdfなど)があります。これらは、SQL Reportingを有効にしたのと同じ方法でBasic +で有効にしています。
[WebJobs](https://docs.microsoft.com/ja-jp/azure/app-service-web/web-sites-create-web-jobs)のどのタイプを使用していますか?オンデマンドで、継続的に、またはスケジュールどおりに実行できますか? –
私はスクリプトでhttpウェブサーバーを実行しているので、私は継続的に使用しています。 – Jeppe
関数 'createPage'はどこにありますか? –