bigcommerce / stencil-cli

BigCommerce Stencil emulator for local theme development
https://developer.bigcommerce.com/stencil-docs
BSD 4-Clause "Original" or "Old" License
102 stars 142 forks source link

Can't install stencil-cli on MacOS 14.3 M1 Pro #1216

Closed tomhayes closed 2 months ago

tomhayes commented 2 months ago

Expected behavior

cli tool installs

Actual behavior

cli tool doesn't install

Steps to reproduce behavior

run npm install -g @bigcommerce/stencil-cli

Environment

Stencil-cli version stencil --version: n/a

Node version node -v: v18.15.0

NPM version npm -v: 9.5.0

OS: MacOS 14.3 (arm64 arch)

Running the command to install stencil-cli results in:

npm WARN deprecated @npmcli/move-file@1.1.2: This functionality has been moved to @npmcli/fs
npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs
npm WARN deprecated npmlog@6.0.2: This package is no longer supported.
npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated are-we-there-yet@3.0.1: This package is no longer supported.
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated mkdirp@0.3.5: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated gauge@4.0.4: This package is no longer supported.
npm WARN deprecated glob@3.2.11: Glob versions prior to v9 are no longer supported
npm WARN deprecated coffee-script@1.7.1: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
npm ERR! code 1
npm ERR! path /Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass
npm ERR! command failed
npm ERR! command sh -c node scripts/build.js
npm ERR! Binary found at /Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/vendor/darwin-arm64-108/binding.node
npm ERR! Testing binary
npm ERR! Binary has a problem: Error: dlopen(/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/vendor/darwin-arm64-108/binding.node, 0x0001): tried: '/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/vendor/darwin-arm64-108/binding.node' (not a mach-o file), '/System/Volumes/Preboot/Cryptexes/OS/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/vendor/darwin-arm64-108/binding.node' (no such file), '/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/vendor/darwin-arm64-108/binding.node' (not a mach-o file)
npm ERR!     at Module._extensions..node (node:internal/modules/cjs/loader:1338:18)
npm ERR!     at Module.load (node:internal/modules/cjs/loader:1117:32)
npm ERR!     at Module._load (node:internal/modules/cjs/loader:958:12)
npm ERR!     at Module.require (node:internal/modules/cjs/loader:1141:19)
npm ERR!     at require (node:internal/modules/cjs/helpers:110:18)
npm ERR!     at module.exports (/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/lib/binding.js:19:10)
npm ERR!     at Object.<anonymous> (/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/lib/index.js:13:35)
npm ERR!     at Module._compile (node:internal/modules/cjs/loader:1254:14)
npm ERR!     at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
npm ERR!     at Module.load (node:internal/modules/cjs/loader:1117:32) {
npm ERR!   code: 'ERR_DLOPEN_FAILED'
npm ERR! }
npm ERR! Building the binary locally
npm ERR! Building: /Users/Tom/.nvm/versions/node/v18.15.0/bin/node /Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp verb cli [
npm ERR! gyp verb cli   '/Users/Tom/.nvm/versions/node/v18.15.0/bin/node',
npm ERR! gyp verb cli   '/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-gyp/bin/node-gyp.js',
npm ERR! gyp verb cli   'rebuild',
npm ERR! gyp verb cli   '--verbose',
npm ERR! gyp verb cli   '--libsass_ext=',
npm ERR! gyp verb cli   '--libsass_cflags=',
npm ERR! gyp verb cli   '--libsass_ldflags=',
npm ERR! gyp verb cli   '--libsass_library='
npm ERR! gyp verb cli ]
npm ERR! gyp info using node-gyp@8.4.1
npm ERR! gyp info using node@18.15.0 | darwin | arm64
npm ERR! gyp verb command rebuild []
npm ERR! gyp verb command clean []
npm ERR! gyp verb clean removing "build" directory
npm ERR! gyp verb command configure []
npm ERR! gyp verb find Python Python is not set from command line or npm configuration
npm ERR! gyp verb find Python Python is not set from environment variable PYTHON
npm ERR! gyp verb find Python checking if "python3" can be used
npm ERR! gyp verb find Python - executing "python3" to get executable path
npm ERR! gyp verb find Python - executable path is "/opt/homebrew/opt/python@3.12/bin/python3.12"
npm ERR! gyp verb find Python - executing "/opt/homebrew/opt/python@3.12/bin/python3.12" to get version
npm ERR! gyp verb find Python - version is "3.12.4"
npm ERR! gyp info find Python using Python version 3.12.4 found at "/opt/homebrew/opt/python@3.12/bin/python3.12"
npm ERR! gyp verb get node dir no --target version specified, falling back to host node version: 18.15.0
npm ERR! gyp verb command install [ '18.15.0' ]
npm ERR! gyp verb install input version string "18.15.0"
npm ERR! gyp verb install installing version: 18.15.0
npm ERR! gyp verb install --ensure was passed, so won't reinstall if already installed
npm ERR! gyp verb install version is already installed, need to check "installVersion"
npm ERR! gyp verb got "installVersion" 9
npm ERR! gyp verb needs "installVersion" 9
npm ERR! gyp verb install version is good
npm ERR! gyp verb get node dir target node version installed: 18.15.0
npm ERR! gyp verb build dir attempting to create "build" dir: /Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/build
npm ERR! gyp verb build dir "build" dir needed to be created? Yes
npm ERR! gyp verb build/config.gypi creating config file
npm ERR! gyp verb build/config.gypi writing out config file: /Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/build/config.gypi
npm ERR! gyp verb config.gypi checking for gypi file: /Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/config.gypi
npm ERR! gyp verb common.gypi checking for gypi file: /Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/common.gypi
npm ERR! gyp verb gyp gyp format was not specified; forcing "make"
npm ERR! gyp info spawn /opt/homebrew/opt/python@3.12/bin/python3.12
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args   '/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args   'binding.gyp',
npm ERR! gyp info spawn args   '-f',
npm ERR! gyp info spawn args   'make',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass/build/config.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Users/Tom/Library/Caches/node-gyp/18.15.0/include/node/common.gypi',
npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
npm ERR! gyp info spawn args   '-Dvisibility=default',
npm ERR! gyp info spawn args   '-Dnode_root_dir=/Users/Tom/Library/Caches/node-gyp/18.15.0',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/Users/Tom/Library/Caches/node-gyp/18.15.0/<(target_arch)/node.lib',
npm ERR! gyp info spawn args   '-Dmodule_root_dir=/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass',
npm ERR! gyp info spawn args   '-Dnode_engine=v8',
npm ERR! gyp info spawn args   '--depth=.',
npm ERR! gyp info spawn args   '--no-parallel',
npm ERR! gyp info spawn args   '--generator-output',
npm ERR! gyp info spawn args   'build',
npm ERR! gyp info spawn args   '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! Traceback (most recent call last):
npm ERR!   File "/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-gyp/gyp/gyp_main.py", line 42, in <module>
npm ERR!     import gyp  # noqa: E402
npm ERR!     ^^^^^^^^^^
npm ERR!   File "/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 9, in <module>
npm ERR!     import gyp.input
npm ERR!   File "/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-gyp/gyp/pylib/gyp/input.py", line 19, in <module>
npm ERR!     from distutils.version import StrictVersion
npm ERR! ModuleNotFoundError: No module named 'distutils'
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: `gyp` failed with exit code: 1
npm ERR! gyp ERR! stack     at ChildProcess.onCpExit (/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-gyp/lib/configure.js:259:16)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:513:28)
npm ERR! gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Darwin 23.3.0
npm ERR! gyp ERR! command "/Users/Tom/.nvm/versions/node/v18.15.0/bin/node" "/Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
npm ERR! gyp ERR! cwd /Users/Tom/.nvm/versions/node/v18.15.0/lib/node_modules/@bigcommerce/stencil-cli/node_modules/node-sass
npm ERR! gyp ERR! node -v v18.15.0
npm ERR! gyp ERR! node-gyp -v v8.4.1
npm ERR! gyp ERR! not ok
npm ERR! Build failed with error code: 1

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/Tom/.npm/_logs/2024-07-09T11_39_28_938Z-debug-0.log
tomhayes commented 2 months ago

Turned out this was because I installed node 18.15.0 in a non-Rosetta terminal!