npm 安裝 chromedriver 時,偶爾會出錯,錯誤提示類似於:
> chromedriver@2.27.2 install /Users/Mario/Work/Lab/waylens-all-in-one-site/node_modules/chromedriver
> node install.js
Downloading https://chromedriver.storage.googleapis.com/2.27/chromedriver_mac64.zip
Saving to /var/folders/7l/mhhqzhps0y59by7pf04nyx5r0000gn/T/chromedriver/chromedriver_mac64.zip
events.js:161
throw er; // Unhandled 'error' event
^
Error: connect ETIMEDOUT 74.125.23.128:443
at Object.exports._errnoException (util.js:1023:11)
at exports._exceptionWithHostPort (util.js:1046:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
經分析發現,某些版本下,chromedriver 的 zip 檔案 url 的響應是 302 跳轉,而在 install.js 裡使用的是 Node.js 內建的 http 物件的 get 方法無法處理 302 跳轉的情況;而在另外一些情況下,則是因為 googleapis.com 被牆了,此時即使採用科學上網的方法也仍然無法獲取檔案。
無論是上述哪種情況,可以使用下面的命令安裝:
npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
使用 cnpm 安裝亦可。