facebook / memlab

A framework for finding JavaScript memory leaks and analyzing heap snapshots
https://facebook.github.io/memlab/
MIT License
4.37k stars 119 forks source link

Could not find expected browser (chrome) locally #90

Closed cs-storm closed 1 year ago

cs-storm commented 1 year ago

As a newbie to this plugin, I ran the following command and got the error.

memlab run --scenario src/tests/memlabTest.js

# The result is 'Could not find expected browser (chrome) locally. Run `npm install` to download the correct Chromium revision (982053).'

# I tried to solve it with the method on stack overflow: https://stackoverflow.com/questions/68051648/could-not-find-expected-browser-chrome-locally
npm install puppeteer --save-dev
cd ./node_modules/puppeteer                  
npm install

# The result is 'Chromium (1069273) downloaded to /Users/xxx/.cache/puppeteer/chrome/mac-1069273'
# And then I rerun the script
memlab run --scenario src/tests/memlabTest.js

# But still report the error at the beginning
JacksonGL commented 1 year ago

@cs-storm Did you install memlab via npm install -g memlab?

Can you copy and paste the result of the following commands here?

  1. memlab version
  2. memlab run --scenario src/tests/memlabTest.js --verbose
cs-storm commented 1 year ago

memlab version

 memlab@1.1.40
 @memlab/heap-analysis@1.0.21
 @memlab/e2e@1.0.24
 @memlab/core@1.1.23
 @memlab/cli@1.0.26
 @memlab/api@1.0.23

memlab run --scenario src/tests/memlabTest.js --verbose

Xvfb supports: false
Xvfb: true
Could not find expected browser (chrome) locally. Run `npm install` to download the correct Chromium revision (982053).
Error: Could not find expected browser (chrome) locally. Run `npm install` to download the correct Chromium revision (982053).
    at ChromeLauncher.launch (/Users/storm/.nvm/versions/node/v16.1.0/lib/node_modules/memlab/node_modules/puppeteer/lib/cjs/puppeteer/node/Launcher.js:105:23)
    at PuppeteerNode.launch (/Users/storm/.nvm/versions/node/v16.1.0/lib/node_modules/memlab/node_modules/puppeteer/lib/cjs/puppeteer/node/Puppeteer.js:125:31)
    at Object.<anonymous> (/Users/storm/.nvm/versions/node/v16.1.0/lib/node_modules/memlab/node_modules/@memlab/api/dist/lib/APIUtils.js:43:39)
    at Generator.next (<anonymous>)
    at /Users/storm/.nvm/versions/node/v16.1.0/lib/node_modules/memlab/node_modules/@memlab/api/dist/lib/APIUtils.js:17:71
    at new Promise (<anonymous>)
    at __awaiter (/Users/storm/.nvm/versions/node/v16.1.0/lib/node_modules/memlab/node_modules/@memlab/api/dist/lib/APIUtils.js:13:12)
    at Object.getBrowser (/Users/storm/.nvm/versions/node/v16.1.0/lib/node_modules/memlab/node_modules/@memlab/api/dist/lib/APIUtils.js:29:12)
    at /Users/storm/.nvm/versions/node/v16.1.0/lib/node_modules/memlab/node_modules/@memlab/api/dist/API.js:343:48
    at Generator.next (<anonymous>)
cs-storm commented 1 year ago

I confirm that memlab is installed this way

JacksonGL commented 1 year ago

@cs-storm If the env variable PUPPETEER_SKIP_CHROMIUM_DOWNLOAD is set to false, npm install puppeteer will not install Chromium. You might want to double check the node_module of your npm global install and make sure puppeteer did download the Chromium binary

cs-storm commented 1 year ago

I solved this problem, I found that I need to install in the puppeteer folder in node_module under global memlab

JacksonGL commented 1 year ago

When you globally install MemLab using npm, it should automatically take care of installing all dependencies (incl. Puppeteer), as well as installing anything required by Puppeteer. I would suggest checking your npm configuration or OS permission to ensure npm is set up correctly.