Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

M1チップ搭載のMacでスクリプト実行時にpuppeteer関係のエラーが出る #104

Closed
yuki-snow1823 opened this issue Apr 28, 2021 · 3 comments
Assignees

Comments

@yuki-snow1823
Copy link

yuki-snow1823 commented Apr 28, 2021

お世話になっております。
こちらのガイドライン拝見しました。

M1チップ搭載のMacでスクリプトを実行しようとしたところエラーが起き、解決しましたのでissueを立てさせていただきました。
プルリクエストも作成してみましたので、お手数ですが、ご確認お願いします。

npm ci

実行結果

error path-to-project/node_modules/puppeteer: Command failed.
Exit code: 1
Command: node install.js
Arguments:
Directory: path-to-project/node_modules/puppeteer
Output:
The chromium binary is not available for arm64:
If you are on Ubuntu, you can install with:

 apt-get install chromium-browser

path-to-project/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserFetcher.js:112
            throw new Error();

このようなエラーが出ました。

解決策

  1. .zshrcに以下を追加
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
export PUPPETEER_EXECUTABLE_PATH=`which chromium`
  1. 以下のファイルに追記
    decomoji/scripts/manager/modules/pretender.js
    decomoji/scripts/manager/modules/remover.js
    decomoji/scripts/manager/modules/uploader.js
    // puppeteer でブラウザを起動する
    const browser = await puppeteer.launch({
      executablePath: '/opt/homebrew/bin/chromium', // ここを追記しました
      devtools: BROWSER,
    });

再度、npm cinode scripts/managerで問題なく実行できました。

参考URL1
参考URL2

@oti
Copy link
Member

oti commented May 1, 2021

報告と PR ありがとうございます。

わたしも M1 Mac(MBA 2020)を利用しており、最近のアップデートも M1 Mac で開発したのですが、そういったエラーが発生したことはありません。謎です。

利用したデコモジのリポジトリは最新の v5.17.2 でしょうか? また、実行している Node.js のバージョンも教えていただきたいです。

ところで、解決策で示していただいている記述に気になるところがあります。

.zshrc ファイルに追記したという

export PUPPETEER_EXECUTABLE_PATH=which chromium

についてですが、ここで取るべき値は which chrommium ではなく /opt/homebrew/bin/chromium ではないでしょうか?

すなわち、 .zshrc ファイルにだけ次のように書かれていれば、launch()executablePath は暗黙的に環境変数を参照するので、デコモジスクリプト側の executablePath 指定は不要になる思われます。

export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
export PUPPETEER_EXECUTABLE_PATH='/opt/homebrew/bin/chromium'

こちらも併せてお試しください。


問題の根本は Puppeteer v8.x が M1 mac で動作しないことだと思われます。現在リリースされている最新版の Puppeteer v9.0.0 では修正されたようです。

これをデコモジ側に取り込んで v5.18 をリリースし、もって最終的な解決策としたいと考えておりますが、まずは上記の対応をワークアラウンドとしてコメントいたします。

ご確認のほど、よろしくお願いいたします。

@oti
Copy link
Member

oti commented May 4, 2021

先ほど v5.17.3 をリリースし、Puppeteer を v9.1.0 にアップデートしました。v5.17.3 をお試しください。

@yuki-snow1823
Copy link
Author

@oti
お世話になります。

原因の調査、ありがとうございました。
また至らないプルリクエストで申し訳ありません。

先ほど、アップデートを行った上で自分の方で追記した部分を削除し実行したところ
無事そのまま登録されることが確認できました。

問題がなかったため、closeさせていただきます。
引き続きご活躍を応援しております。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants