이것저것 해보기🌼

puppeteer : Could not find Chrome 에러 해결 본문

프로젝트/참나무농원

puppeteer : Could not find Chrome 에러 해결

realtree 2024. 10. 4. 11:08

 

에러 로그

 

Error: Could not find Chrome (ver. 129.0.6668.58). This can occur if either
1. you did not perform an installation before running the script (e.g. `npx puppeteer browsers install ${browserType}`) or
2. your cache path is incorrectly configured (which is: /workspace/.cache/puppeteer).

For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides/configuration.

 

크롬 브라우저를 찾을 수 없다는 오류다.

이 경우 로컬에서는 제대로 되는데 배포 환경에서 크롬 브라우저가 없으므로 발생하는 경우가 많다.

 

 

공식문서

Starting in v19.0.0, Puppeteer stores browsers in ~/.cache/puppeteer to globally cache browsers between installation.

 

퍼피티어 19버전 이후부터는 puppeteer가 브라우저를 global cache 폴더에 저장한다고 되어있다.

 

오류 메세지에 있던 대로 브라우저를 설치해보면

어떤 폴더에 크롬 브라우저가 설치되는지 볼 수 있다.

npx puppeteer browsers install

 

~/.cache 폴더에 저장됨

 

이 폴더는 당연히 firebase 로 배포시에 같이 업로드되지 않으므로 크롬 브라우저가 설치되지 않았다고 나오는 것이다.

 

에러 로그에 있던대로 공식 문서 링크를 확인해본다.

https://pptr.dev/guides/configuration

 

Configuration | Puppeteer

By default, Puppeteer downloads and uses a specific version of Chrome so its

pptr.dev

 

Changing the default cache directory

라는 항목에서 브라우저 설치 경로를 어떻게 바꾸는지 기술되어있다.

결국 빌드 스텝에서 같이 package화 되려면 해당 프로젝트 폴더 내에 저장이 되어야 한단 것이다.

 

project-directory/.puppeteerrc.cjs

const {join} = require('path');

/**
 * @type {import("puppeteer").Configuration}
 */
module.exports = {
  // Changes the cache location for Puppeteer.
  cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
};

 

 

이렇게 설정파일을 넣고 다시 npm install puppeteer browser install 실행 시, 

이번에는 프로젝트 폴더 내의 .cache/puppeteer/ 폴더 하위로 크롬이 설치완료되었다.

./.cache/puppeteer/

 

Firebase functions Memory limit 늘리기

그리고 다시 실행해보니 이번에는 메모리를 초과하였다는 에러가 발생했다.

 

Memory limit of 512 MiB exceeded with 517 MiB used. Consider increasing the memory limit, see https://cloud.google.com/functions/docs/configuring/memory

 

이 경우엔 기본 512 MB 에서 1GB 나 2 GB 정도로 메모리를 늘리고 시도해본다.