blink
blink copied to clipboard
Error running in local environment
Disclaimers
- [x] Before filing this report, I have read the documentation fully and followed it.
- [x] I understand that if the "issue" is something that is already answered by the documentation and/or are caused by me not reading the documentation, the issue will be blocked and/or locked (with the implicit explanation being to "go read the docs"), and I may not be able to open another issue for this repository ever again.
Issue Description
Describe the bug showing error like this:
34.66 npm warn deprecated @material-ui/[email protected]: Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.
54.16 npm error code 1
54.16 npm error path /home/node/node_modules/re2
54.16 npm error command failed
54.16 npm error command sh -c install-from-cache --artifact build/Release/re2.node --host-var RE2_DOWNLOAD_MIRROR || npm run rebuild
54.16 npm error Trying https://github.com/uhop/node-re2/releases/download/1.16.0/linux-musl-arm64-115.br ...
54.16 npm error Trying https://github.com/uhop/node-re2/releases/download/1.16.0/linux-musl-arm64-115.gz ...
54.16 npm error Building locally ...
54.16 npm error
54.16 npm error > [email protected] rebuild
54.16 npm error > node-gyp rebuild
54.16 npm error
54.16 npm error
54.16 npm error > [email protected] rebuild
54.16 npm error > node-gyp rebuild
54.16 npm error gyp info it worked if it ends with ok
54.16 npm error gyp info using [email protected]
54.16 npm error gyp info using [email protected] | linux | arm64
54.16 npm error gyp info find Python using Python version 3.12.3 found at "/usr/bin/python3"
54.16 npm error gyp http GET https://nodejs.org/download/release/v20.15.0/node-v20.15.0-headers.tar.gz
54.16 npm error gyp http 200 https://nodejs.org/download/release/v20.15.0/node-v20.15.0-headers.tar.gz
54.16 npm error gyp http GET https://nodejs.org/download/release/v20.15.0/SHASUMS256.txt
54.16 npm error gyp http 200 https://nodejs.org/download/release/v20.15.0/SHASUMS256.txt
54.16 npm error gyp info spawn /usr/bin/python3
Deployment Method
- run in local machine (MacOS)
To Reproduce
- Clone the repository
- run
make dev
Expected behavior A clear and concise description of what you expected to happen.
Screenshots If applicable, add screenshots to help explain your problem.
Additional context Add any other context about the problem here.
I see that you didn't include the full set of error messages, because further down will be this error:
ModuleNotFoundError: No module named 'distutils'
...this is the main attribute of this problem.
The distutils module was deprecated in Python v3.10 and v3.11, then removed in v3.12+. The node-gyp module depended on distutils...
If you look in the package-lock.json file, you'll see a dependency on node-gyp on version 8.2.0. This version was released before distutils was removed from Python...
The node-gyp addon build tool is now at version 10.2.0, and the dependency on distutils was resolved in Issue #2869
Thus, this project has out-of-date dependencies. The dependency chain in Blink is:
node-gyp -> re2 -> @metascraper/helpers -> metascraper
After running npm update metascraper, I took another look at the package-lock.json file and found that node-gyp had been updated to v10.2.0 (along with 256 others, heh). I deliberately chose not to update the entire package set because I don't know what will break (doing as much as I did might be enough to break something already).
However, we're not done. If you try make dev again, you'll see a new error:
24.79 npm error ../vendor/abseil-cpp/absl/base/internal/direct_mmap.h:36:10: fatal error: linux/unistd.h: No such file or directory
This is because LTS Alpine does not have the standard linux headers. So, you'll have to edit the Dockerfile and adjust the apk add ... on lines 5 and 23 to include linux-headers:
RUN apk add --no-cache --virtual .gyp python3 linux-headers make g++ libc6-compat && \
npm i -g npm
Finally, running make dev will succeed. I did not test the web app after doing this, though, so I can't say what's broken from doing this...