質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

0回答

1060閲覧

@types/...にサポートされてない型の拡張の仕方を教えてほしい。

tomomo

総合スコア430

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2020/10/21 00:55

編集2020/10/22 01:09

puppeteerというのを使ってプログラムを組んでいたのですが、以下のエラーが出ます。

typescript

1// 改善前 2const imageURL = "http://tekitou.com/example.png" 3(async () => { 4 const browser = await puppeteer.launch({/* オプションは割愛*/}); 5 const page = await browser.newPage(); 6 const response = await page.goto(imageURL, { waitUntil: ['networkidle0'], timeout: 300000 }); 7 const responseBuffer = await response.buffer(); // ← ここでエラーが出る。 8:
Error: Protocol error (Network.getResponseBody): Request content was evicted from inspector cache

キャッシュが標準設定では足りないという風に解釈しました。
ググってissueに挙ってたのを参考に修正したのが以下です。

typescript

1// 改善後 2const imageURL = "http://tekitou.com/example.png" 3(async () => { 4 const browser = await puppeteer.launch(/* オプションは割愛*/); 5 const page = await browser.newPage(); 6 // ↓ここから 7 await page._client.send('Network.enable', { 8 maxResourceBufferSize: 1024 * 1024 * 150, // 150Mb 9 maxTotalBufferSize: 1024 * 1024 * 300, // 300mb 10 }); 11 // ↑ここまでを追記 12 const response = await page.goto(imageURL, { waitUntil: ['networkidle0'], timeout: 300000 }); 13 const responseBuffer = await response.buffer(); 14 :

javascript(.mjs)で実行したら正常に動いたので一応効果はある事は確認できたのですが、
Typescriptで書くとpage._client.sendでエラーが出ます。

プロパティ '_client' は型 'Page' に存在しません。

多分@types/puppeteerに含まれてない(許可されてない)書き方なのでエラーが出てるのかと思います。
追記した_client.sendが通るようにinterface extend で拡張できるように思っているのですが、書き方(適用方法?)が分かりません。
また当ケースのような場合でも回避できるのか。
ご教示いただけないでしょうか?

よろしくお願いします。

※当方Typescriptに疎く勉強中なのですが、文面等で誤ってる言葉や解釈があれば合わせて指摘してくれると幸いに思います。

環境、設定

  • typescript: 4.0.2
  • package.json(パッケージのみ抜粋)

json

1{ 2 "dependencies": { 3 "@types/request-promise": "^4.1.46", 4 "axios": "^0.20.0", 5 "puppeteer": "^5.3.1" 6 }, 7 "devDependencies": { 8 "@types/node": "^14.14.0", 9 "@types/puppeteer": "^3.0.2", 10 "@typescript-eslint/eslint-plugin": "^4.5.0", 11 "@typescript-eslint/parser": "^4.5.0", 12 "eslint": "^7.11.0", 13 "eslint-plugin-vue": "^7.1.0", 14 "fs": "^0.0.1-security", 15 "ts-node": "^9.0.0", 16 "tsconfig-paths": "^3.9.0", 17 "typescript": "^4.0.3" 18 } 19}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問