segment-boneyard / nightmare

A high-level browser automation library.
https://open.segment.com
19.54k stars 1.08k forks source link

Cannot install macOS m1 cpu #1636

Open wnghdcjfe opened 3 years ago

wnghdcjfe commented 3 years ago

When I install nightmare in macOS (m1 CPU) It is not working like this. How can I fix it?

KakaoTalk_20210705_153014335
vsinha commented 3 years ago

Encountered the same, I think the old version of Electron being used doesn't (didn't) have arm64 builds. Updating to a new version of electron should work

~ $ npm --version
7.20.0

~ $ npm list electron
viraj@ /Users/viraj
└── electron@13.1.7

~ $ uname -a
Darwin Virajs-MacBook-Pro.local 20.5.0 Darwin Kernel Version 20.5.0: Sat May  8 05:10:31 PDT 2021; root:xnu-7195.121.3~9/RELEASE_ARM64_T8101 arm64

~ $ npm install nightmare
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated deep-defaults@1.0.5: not actively maintained; find alternatives
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm ERR! code 1
npm ERR! path /Users/viraj/node_modules/nightmare/node_modules/electron
npm ERR! command failed
npm ERR! command sh -c node install.js
Downloading electron-v2.0.18-darwin-arm64.zip
npm ERR! Error: GET https://github.com/electron/electron/releases/download/v2.0.18/electron-v2.0.18-darwin-arm64.zip returned 404
npm ERR! /Users/viraj/node_modules/nightmare/node_modules/electron/install.js:54
npm ERR!   throw err
npm ERR!   ^
npm ERR!
npm ERR! Error: Failed to find Electron v2.0.18 for darwin-arm64 at https://github.com/electron/electron/releases/download/v2.0.18/electron-v2.0.18-darwin-arm64.zip
npm ERR!     at Request.<anonymous> (/Users/viraj/node_modules/nugget/index.js:169:61)
npm ERR!     at Request.emit (node:events:369:20)
npm ERR!     at Request.onRequestResponse (/Users/viraj/node_modules/request/request.js:1059:10)
npm ERR!     at ClientRequest.emit (node:events:369:20)
npm ERR!     at HTTPParser.parserOnIncomingClient [as onIncoming] (node:_http_client:646:27)
npm ERR!     at HTTPParser.parserOnHeadersComplete (node:_http_common:129:17)
npm ERR!     at TLSSocket.socketOnData (node:_http_client:512:22)
npm ERR!     at TLSSocket.emit (node:events:369:20)
npm ERR!     at addChunk (node:internal/streams/readable:313:12)
npm ERR!     at readableAddChunk (node:internal/streams/readable:288:9)

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/viraj/.npm/_logs/2021-07-21T02_30_07_552Z-debug.log
carter-dewey-wapo commented 2 years ago

Would love a fix to this problem.

wjpurdum commented 2 years ago

Updating to the latest version of nightmare doesn't work. It still uses a version of electron that is too old for M1.

rayhomie commented 2 years ago

Can this problem be solved ?😒

betogzo commented 2 years ago

frustrating... but trying to solve this issue i found "puppeteer" and it works just fine. rip nightmare

viperet commented 2 years ago

Just found a solution - you have to install it using npm install --arch=x64, and it runs perfectly using Rosetta 2.

aq1018 commented 1 year ago

I think a proper solution is to bump the electron version to the one that supports m1 cpu? Electron 2.0.18 was released 4 years ago and the latest version is 21.0.1

wilfredjonathanjames commented 1 year ago

This is a pretty big deal with a seemingly simple fix. Considering it hasn't been addressed, does this mean nightmare is a dead project?

JRJurman commented 1 year ago

Was able to solve this by using npm's overrides (described here). If you use "electron": "^11.0.0",, that is compatible with M1, and works with Nightmare's existing API (as far as I can tell).

  "devDependencies": {
    "electron": "^11.0.0",
    "nightmare": "^3.0.2"
  },
  "overrides": {
    "nightmare": {
      "electron": "$electron"
    }
  }