环境:centos8.0,node16.15,webpack:5.70.0,puppeteer:13.6.0问题描述:在开发环境下使用puppeteer可以正常运行,但是通过webpack打包后,启动puppeteer时会报错:Error:_projectRootisundefined。无法创建BrowserFetcher。原因:由于puppeteer的启动需要谷歌Chrome内核chromium,默认会使用node_modules中的chromium,但这是一个可执行程序,webpack不会把程序打包在一起,所以启动puppeteer时会找不到chromium,这会导致启动失败,那就单独为puppeteer配置另一个chromium。解决方法:将项目中的/node_modules/puppeteer/.local-chromium/linux-982053复制到方便的位置,我这里复制到/software/chromium。linux-982053中,linux指的是系统,如果在windows上就是win64或者win32,后面的数字是版本号,因人而异,应该不影响。修改启动参数puppeteer.launch({executablePath:"/software/chromium/linux-982053/chrome-linux/chrome"});这里通过配置executablePath参数,指定puppeteer使用第一步复制的chromium,这样打包后的程序也能找到chromium。这应该可以解决问题。
