I am trying to write Node.js function to be deployed within Firebase Cloud Functions. The function that I am writing needs to use faker.js to help create mock testing data.
Could not create or update Cloud Run service createfakeprofiles, Container Healthcheck failed. Revision 'createfakeprofiles-00006-moh' is not ready and cannot serve traffic. The user-provided container failed to start and listen on the port defined provided by the PORT=8080 environment variable. Logs for this revision might contain more information.
Logs URL: https://console.cloud.google.com/logs/viewer?project=test-app&resource=cloud_run_revision/service_name/createfakeprofiles/revision_name/createfakeprofiles-00006-moh&advancedFilter=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22createfakeprofiles%22%0Aresource.labels.revision_name%3D%22createfakeprofiles-00006-moh%22
For more troubleshooting guidance, see https://cloud.google.com/run/docs/troubleshooting#container-failed-to-start
I took a closer look at the logs and this was the output:
createfakeprofiles: Detailed stack trace: Error: Cannot find module '@faker-js/faker'
2024-03-09T02:57:32.133007Z ? createfakeprofiles: Require stack:
2024-03-09T02:57:32.133013Z ? createfakeprofiles: - /workspace/index.js
2024-03-09T02:57:32.133020Z ? createfakeprofiles: - /layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/loader.js
2024-03-09T02:57:32.133029Z ? createfakeprofiles: - /layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/main.js
2024-03-09T02:57:32.133043Z ? createfakeprofiles: at Module._resolveFilename (node:internal/modules/cjs/loader:1134:15)
2024-03-09T02:57:32.133049Z ? createfakeprofiles: at Module._load (node:internal/modules/cjs/loader:975:27)
2024-03-09T02:57:32.133056Z ? createfakeprofiles: at Module.require (node:internal/modules/cjs/loader:1225:19)
2024-03-09T02:57:32.133062Z ? createfakeprofiles: at require (node:internal/modules/helpers:177:18)
2024-03-09T02:57:32.133069Z ? createfakeprofiles: at Object.<anonymous> (/workspace/index.js:14:17)
2024-03-09T02:57:32.133075Z ? createfakeprofiles: at Module._compile (node:internal/modules/cjs/loader:1356:14)
2024-03-09T02:57:32.133082Z ? createfakeprofiles: at Module._extensions..js (node:internal/modules/cjs/loader:1414:10)
2024-03-09T02:57:32.133087Z ? createfakeprofiles: at Module.load (node:internal/modules/cjs/loader:1197:32)
2024-03-09T02:57:32.133093Z ? createfakeprofiles: at Module._load (node:internal/modules/cjs/loader:1013:12)
2024-03-09T02:57:32.133100Z ? createfakeprofiles: at Module.require (node:internal/modules/cjs/loader:1225:19)
2024-03-09T02:57:32.133387Z ? createfakeprofiles: Could not load the function, shutting down.
2024-03-09T02:57:32.702663418Z W createfakeprofiles: Container called exit(1).
my package.json:
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "eslint .",
"serve": "firebase emulators:start --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "18"
},
"main": "index.js",
"dependencies": {
"@faker-js/faker": "^8.4.1",
"@google-cloud/secret-manager": "^5.1.0",
"firebase-admin": "^11.8.0",
"firebase-functions": "^4.3.1"
},
"devDependencies": {
"@faker-js/faker": "^8.4.1",
"eslint": "^8.15.0",
"eslint-config-google": "^0.14.0",
"firebase-functions-test": "^3.1.0"
},
"private": true
}
I've made sure to install faker and it's showing up in my dependencies, but I can't figure out where these errors are coming from.
I also made sure that I was running the install command in the right place:
functions/
- node_modules/
- index.js
- package.json
faker is listed in packages.json
, so where am I going wrong here?
After trying all the potential solutions outlined here, it was actually the last one that did it for me. I had included @faker-js/faker
in my dependencies
AND devDependencies
, so I removed it from devDependencies
and the problem was solved.