puppeteer を webpack で bundle しようとしたら「Can't resolve 'ws'」と怒られた場合の対処方法

結論

webpack.config.jsexternals に以下のように追記します。

module.exports = {
(省略)
  externals: {
    puppeteer: 'require("puppeteer")'
  },
(省略)
};

具体的な現象

$ webpack
Hash: 89a5cffe5c5fd346c8e6
Version: webpack 4.41.5
Time: 609ms
Built at: 2020/01/05 20:16:20
(省略)

ERROR in ./node_modules/puppeteer/lib/WebSocketTransport.js
Module not found: Error: Can't resolve 'ws' in '/Users/FOOBAR/APP/node_modules/puppeteer/lib'
 @ ./node_modules/puppeteer/lib/WebSocketTransport.js 16:18-31
 @ ./node_modules/puppeteer/lib/Launcher.js
 @ ./node_modules/puppeteer/lib/Puppeteer.js
 @ ./node_modules/puppeteer/index.js
(省略)

参考

github.com

Powered by はてなブログ