問題タブ [puppeteer-sharp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
132 参照

puppeteer - PupeeteerSharp が ServiceFabric ステートレス サービスで機能しない

Javascript Web サイトをレンダリングできる Web クローラーを開発しているので、人気のある Node.JS ヘッドレス Chrome ブラウザー Pupeeteer API の .NET ポートである PupeeteerSharp を使用することにしました。Windows 10 開発マシンで Service Fabric のローカル開発クラスターを実行しており、ソリューションにステートレス サービスが 1 つあります。

DataService プロジェクトのPackageRootフォルダーの下にフォルダーを作成し、.local-chromiumそこにフォルダーの内容 (chrome.exe実行可能ファイルを含む) を配置して、サービスの独立したデータ パッケージとしてデプロイします。

また、この XML 構成行をServiceManifest.xmlファイルに配置しました。

<DataPackage Name="Data" Version="1.0.0" />

これまでのところ問題なく、ヘッドレス ブラウザのコンテンツが SFCluster Data パッケージ ディレクトリに正しくコピーされています。

次に、Stateless Service コードで、次のように Pupeeteer chromium 実行可能ファイルを呼び出そうとします。

この行で:using (var page = (await browser.NewPageAsync()))私のコード (スレッド) は、戻ることなく単にハングします。デバッグ コンソールでは、多くのスレッドの終了が表示されますが、例外は発生しません。以前、クロム フォルダーのコンテンツの適切なコピーに関する他のエラーを修正していたときに System.IO.FileNotFoundException が発生していましたが、これらのエラーがなくなったため、コードが .exe を見つけたように見えますが、何らかの理由で PupeeterSharp のヘッドレス モードを開始できません。

これは、Service Fabric のネイティブ アプリケーション モデルで外部の .exe chromium バイナリを単純に実行できないということですか? 代わりに Docker および Linux コンテナーを使用する必要がありますか?

0 投票する
1 に答える
573 参照

azure - PupeteerSharp: プロトコル エラー (Runtime.callFunctionOn): セッションが閉じられました

次のコードを実行しようとしています。

これはローカルで機能しますが、docker コンテナーにデプロイすると最後の行で失敗します。次のメッセージで失敗します。

ステージ Load Page 1 で PrintToPdf が失敗し、メッセージ Protocol error (Runtime.callFunctionOn): Session closed. ほとんどの場合、ページは閉じられています。閉じる理由: NetworkManager が Network.requestWillBeSent の処理に失敗しました。値を null にすることはできません。(パラメータ「キー」)。System.Collections.Concurrent.ConcurrentDictionary 2.ThrowKeyNullException() at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey キー、Func 2 valueFactory) at PuppeteerSharp.Helpers.MultiMap2.Add(TKey キー、TValue 値) でPuppeteerSharp.NetworkManager.Client_MessageReceived (オブジェクト送信者、MessageEventArgs e) での PuppeteerSharp.NetworkManager.OnRequestWillBeSentAsync(RequestWillBeSentPayload e) での String interruptionId)

このエラーは何を意味し、どのように修正/回避できますか?

これは、違いが生じる場合、Azure コンテナー インスタンスによってサポートされる Azure 関数で実行されています。