Closed k2xl closed 5 months ago
I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
Hi, I had a similar error with the same version of firebase admin and also on ARM. I changed my node version to 20.13 and updated my docker file by adding:
RUN apk add --no-cache -u \ curl \ g++ \ automake \ autoconf \ nasm \ gcc \ gifsicle \ zlib \ git \ unzip\ make\ python3
This should also be related to https://github.com/firebase/firebase-admin-node/pull/2534
Which you can fix by upgrading farmhash
to v3.3.1
. We will also include this change in the upcoming release
I am seeing the same issue with firebase-admin v12.1.1 + farmhash v3.3.1
Experiencing same here :/
@lahirumaramba FYI, should reopen this issue
Hey folks, we will look into a better fix for this. In the meantime, are you able to add python to your docker image (or https://github.com/firebase/firebase-admin-node/issues/2552#issuecomment-2104813661) to and see if that resolves the issue?
Also, see: https://github.com/lovell/farmhash/issues/48
For others facing the same issue, it would help us if you can share more information on your environment and the errors you are seeing.
Here is the exact error:
/var/server # npm ci
npm error code 1
npm error path /var/server/node_modules/farmhash
npm error command failed
npm error command sh -c prebuild-install || node-gyp rebuild
npm error prebuild-install warn install No prebuilt binaries found (target=3 runtime=napi arch=arm64 libc=musl platform=linux)
npm error gyp info it worked if it ends with ok
npm error gyp info using node-gyp@10.1.0
npm error gyp info using node@18.20.3 | linux | arm64
npm error gyp ERR! find Python
npm error gyp ERR! find Python Python is not set from command line or npm configuration
npm error gyp ERR! find Python Python is not set from environment variable PYTHON
npm error gyp ERR! find Python checking if "python3" can be used
npm error gyp ERR! find Python - executable path is ""
npm error gyp ERR! find Python - "" could not be run
npm error gyp ERR! find Python checking if "python" can be used
npm error gyp ERR! find Python - executable path is ""
npm error gyp ERR! find Python - "" could not be run
npm error gyp ERR! find Python
npm error gyp ERR! find Python **********************************************************
npm error gyp ERR! find Python You need to install the latest version of Python.
npm error gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
npm error gyp ERR! find Python you can try one of the following options:
npm error gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable"
npm error gyp ERR! find Python (accepted by both node-gyp and npm)
npm error gyp ERR! find Python - Set the environment variable PYTHON
npm error gyp ERR! find Python - Set the npm configuration variable python:
npm error gyp ERR! find Python npm config set python "/path/to/pythonexecutable"
npm error gyp ERR! find Python For more information consult the documentation at:
npm error gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
npm error gyp ERR! find Python **********************************************************
npm error gyp ERR! find Python
npm error gyp ERR! configure error
npm error gyp ERR! stack Error: Could not find any Python installation to use
npm error gyp ERR! stack at PythonFinder.fail (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:306:11)
npm error gyp ERR! stack at PythonFinder.findPython (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:164:17)
npm error gyp ERR! stack at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
npm error gyp ERR! stack at async configure (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:27:18)
npm error gyp ERR! stack at async run (/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js:81:18)
npm error gyp ERR! System Linux 6.1.0-13-arm64
npm error gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm error gyp ERR! cwd /var/server/node_modules/farmhash
npm error gyp ERR! node -v v18.20.3
npm error gyp ERR! node-gyp -v v10.1.0
npm error gyp ERR! not ok
Running inside a node:18-alpine
docker container on the following environment:
Linux 267451d27941 6.1.0-13-arm64 #1 SMP Debian 6.1.55-1 (2023-09-29) aarch64 Linux
Edit: Tried to update the server to 6.1.0-21-arm64
, but without success. The error prevails.
Edit 2: Tried node:18
(no alpine) and could successfully run npm install, no building from sources or python error ✅.
Thanks @lhermann for the detailed response! Would adding python
build tools to your docker help? See: https://stackoverflow.com/a/59471030/1526201
How many of y'all facing this issue use the remote config API? I am wondering if we should make farmhash
an optional dependency, so you would have to deal with this only if you are using the remote config API (which depends on farmhash
).
Getting a similar error using the dockerfile here: https://github.com/sspenst/thinky.gg/blob/main/Dockerfile.dev
19.32 npm error code 1
19.32 npm error path /thinky_app/node_modules/farmhash
19.32 npm error command failed
19.32 npm error command sh -c prebuild-install || node-gyp rebuild
19.32 npm error prebuild-install warn install No prebuilt binaries found (target=3 runtime=napi arch=arm64 libc=musl platform=linux)
19.32 npm error gyp info it worked if it ends with ok
19.32 npm error gyp info using node-gyp@10.1.0
19.32 npm error gyp info using node@22.2.0 | linux | arm64
19.32 npm error gyp ERR! find Python
19.32 npm error gyp ERR! find Python Python is not set from command line or npm configuration
19.32 npm error gyp ERR! find Python Python is not set from environment variable PYTHON
19.32 npm error gyp ERR! find Python checking if "python3" can be used
19.32 npm error gyp ERR! find Python - executable path is ""
19.32 npm error gyp ERR! find Python - "" could not be run
19.32 npm error gyp ERR! find Python checking if "python" can be used
19.32 npm error gyp ERR! find Python - executable path is ""
19.32 npm error gyp ERR! find Python - "" could not be run
19.32 npm error gyp ERR! find Python
19.32 npm error gyp ERR! find Python **********************************************************
19.32 npm error gyp ERR! find Python You need to install the latest version of Python.
19.32 npm error gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
19.32 npm error gyp ERR! find Python you can try one of the following options:
19.32 npm error gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable"
19.32 npm error gyp ERR! find Python (accepted by both node-gyp and npm)
19.32 npm error gyp ERR! find Python - Set the environment variable PYTHON
19.32 npm error gyp ERR! find Python - Set the npm configuration variable python:
19.32 npm error gyp ERR! find Python npm config set python "/path/to/pythonexecutable"
19.32 npm error gyp ERR! find Python For more information consult the documentation at:
19.32 npm error gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
19.32 npm error gyp ERR! find Python **********************************************************
19.32 npm error gyp ERR! find Python
19.32 npm error gyp ERR! configure error
19.32 npm error gyp ERR! stack Error: Could not find any Python installation to use
19.32 npm error gyp ERR! stack at PythonFinder.fail (/thinky_app/node_modules/node-gyp/lib/find-python.js:306:11)
19.32 npm error gyp ERR! stack at PythonFinder.findPython (/thinky_app/node_modules/node-gyp/lib/find-python.js:164:17)
19.32 npm error gyp ERR! stack at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
19.32 npm error gyp ERR! stack at async configure (/thinky_app/node_modules/node-gyp/lib/configure.js:27:18)
19.32 npm error gyp ERR! stack at async run (/thinky_app/node_modules/node-gyp/bin/node-gyp.js:81:18)
19.32 npm error gyp ERR! System Linux 6.6.26-linuxkit
19.32 npm error gyp ERR! command "/usr/local/bin/node" "/thinky_app/node_modules/.bin/node-gyp" "rebuild"
19.32 npm error gyp ERR! cwd /thinky_app/node_modules/farmhash
19.32 npm error gyp ERR! node -v v22.2.0
19.32 npm error gyp ERR! node-gyp -v v10.1.0
19.32 npm error gyp ERR! not ok
Optional dependency could be a possible solution, we are currently only using the messaging API.
Indeed same issue for me on 12.1.1
@lahirumaramba my team isn't using the remote config api so that solution seems appealing (at least in our case).
This issue also occurs when using the node:20-bookworm-slim
docker image as a base.
Thank you for looking into all of this, I appreciate it :)
This issue will sometimes resolve if the platform of the container is set to --platform=linux/amd64
although it can depend on your docker invocation (ex: works on a local mac build, fails on a github container build)
Setting the platform to amd64 allows for the prebuilt binary of farmhash
to be fetched
If making farmhash
optional, I'd be all for that as my project does not use the remote config API. Alternatively, I can confirm that if I install python before installing the dependencies, it works as intended. It does increase my docker image quite a bit so for now I just downgraded firebase-admin to 12.0.0
Thanks for looking into this!
Thanks for the additional context folks! We are also looking into switching to an alternative dependency https://www.npmjs.com/package/farmhash-modern that does not require python
.
Let me run some tests with that as that seem to be a better option...
Do we have an update on this?
I am seeing lots of merges on this, but still facing the issue. I have tried almost everything, installing python, adding PATH, node-gyp build with python. but nothing seems to work.
The critical problem on my end is that my setup is using firebase-admin@9.6.0 for sending multi-cast messages for push notifications. Now upgrading it to 12 directly is a problem. Can anyone tell of a safe version, where I can shift without much hassle.
Any help would be appreciated.
If you are experiencing issues installing firebase-admin, you can try downgrading to firebase-admin@12.0.0
.
Environment:
OS: Windows, macOS (Linux might work too) Node version: 18+
Reason:
The issue is related to the farmhash
dependency, which requires Python and node-gyp.
Hey folks, we replaced farmhash
with farmhash-modern
in v12.2.0
. Please test with the latest firebase-admin
v12.2.0
and let us know if you run into any issues. Thanks!
works well on docker build with bun:1.1.13-alpine
Hi @lahirumaramba , Can you elaborate what you did exactly? the farmhash is used under the hood right by firebase-admin, how did you replace it? THanks
[READ] Step 1: Are you in the right place?
[REQUIRED] Step 2: Describe your environment
[REQUIRED] Step 3: Describe the problem
Getting error when building on docker on Mac
FROM node:20-alpine AS base
https://github.com/sspenst/thinky.gg/pull/1101/filesWorks fine on 12.0.0.
Error is below: