gyp.. 사랑과 증오가 담긴 단어이다.
GYP는 빌드 자동화 도구이며 파이썬으로 작성된 메타 빌드 시스템이다.
우리에게 많은 것을 가능하게 해주는 빌드툴이지만 나같은 보통의 개발자 같은 경우 잘 안보는 툴이다.하지만 우리가 사용하는 거의 모든곳의 베이스가 되는 node-gyp..
그래서 node를 시작하면 처음으로 접하는 error가 node-gyp 관련 에러인 경우가 많다.
python기반이므로 node-gyp error는 python 관련된게 많으며,
node-gyp의 버전에 따라 pyhtno 3.x 이나 python 2.7.x 를 요청하는 경우가 있는데,
환경에 따라 이제 에러가 나는것이다.
실질적으로 npm에 들어가서 조회를 해보는 경우
버전마다 요청하는 python의 버전이 다르다.
https://www.npmjs.com/package/node-gyp
그러므로 node-gyp 관련 Error가 나는 경우
해당 라이브러리에서 요구하는 node-gyp의 버전과 내가 가지고 있는 python의 버전을 확인하는것이 제일 1순위여야한다.
대략적으로 보면 아래 에러코드에서 중점적인것은 python 과 node-gyp
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "C:\Users\AppData\Local\Programs\Python\Python36-32\python.EXE", you can set the PYTHON env variable.
gyp ERR! stack at PythonFinder.failNoPython (C:\works\react-hls\node_modules\node-gyp\lib\configure.js:483:19)
gyp ERR! stack at PythonFinder.<anonymous> (C:\works\react-hls\node_modules\node-gyp\lib\configure.js:508:16)
gyp ERR! stack at C:\works\react-hls\node_modules\graceful-fs\polyfills.js:284:29
gyp ERR! stack at FSReqCallback.oncomplete (fs.js:192:21)
gyp ERR! System Windows_NT 10.0.19042
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\works\\react-hls\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd C:\works\react-hls\node_modules\node-sass
gyp ERR! node -v v14.17.1
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
Build failed with error code: 1
npm WARN rollback Rolling back yargs-parser@5.0.0 failed (this is probably harmless): EPERM: operation not permitted, rmdir 'C:\works\react-hls\node_modules\sass-graph\node_modules'
npm WARN sass-loader@7.0.1 requires a peer of webpack@^3.0.0 || ^4.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.2 (node_modules\webpack\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.3 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.9.0 postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-sass@4.9.0 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\AppData\Roaming\npm-cache\_logs\2022-02-28T06_52_41_030Z-debug.log
보면 node-gyp의 version은 3.6.2이다.
npm 에서 확인해보면 on unix 등등을 보면 python v2.7 만 지원한다. v3.x 는 지원 안함..
반대로 node-gyp 8.x대부터는 python v2.7
즉 2022년이지만 python v2.7 를 install 하러간다.. ㅠㅠ
또한 윈도우 환경에서 개발할 경우 옛날버전이면 windows-build-tools 를 설치해야한다. (최신버전들은 지원을 안한다랄까? 필요없다.)
# 관리자모드 파워쉘에서 해줘야한다.
npm install --global --production windows-build-tools
관리자 모드에서 안하면 아래와 같이 에러가 난다.
Please restart this script from an administrative PowerShell!
The build tools cannot be installed without administrative rights.
To fix, right-click on PowerShell and run "as Administrator".
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! windows-build-tools@5.2.2 postinstall: `node ./dist/index.js`
npm ERR! Exit status 1
node-gyp 다른 글
https://24hours-beginner.tistory.com/300
https://24hours-beginner.tistory.com/21
https://24hours-beginner.tistory.com/18
'Web > Javascript|TypeScript' 카테고리의 다른 글
[javascript] 커링 (feat. f(a)(b)(c)) (0) | 2022.09.20 |
---|---|
[TypeScript] .d.ts 파일이란? (0) | 2022.07.28 |
[JS] ubuntu 18.04 npm install Error (feat. gyp) (0) | 2022.02.18 |
[typescript] interface 키값이라고 하기 (0) | 2021.10.19 |
[Javascript][공부하자] Higher-Order Function (HOF) (0) | 2021.10.18 |