[READ] Step 1: Are you in the right place?
I think so.
[REQUIRED] Step 2: Describe your environment
Operating System version:Win10
Firebase SDK version: "^7.19.0"
[REQUIRED] Step 3: Describe the problem
firebase deploy --only functions
== Deploying to 'screams-62f3b'...
deploying functions
functions: ensuring required API cloudfunctions.googleapis.com is enabled...
functions: The Node.js 8 runtime is deprecated and will be decommissioned on 2021-03-15. For
more information, see: https://firebase.google.com/support/faq#functions-runtime
functions: required API cloudfunctions.googleapis.com is enabled
functions: preparing functions directory for uploading...
functions: packaged functions (28.55 KB) for uploading
functions: functions folder uploaded successfully
functions: updating Node.js 8 (Deprecated) function api(europe-west6)...
functions[api(europe-west6)]: Deployment error.
unction failed on loading user code. Error message: Code in file index.js can't be loaded.
id you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'firebase'
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/srv/index.js:4:18)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
Original Code:
````
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const express = require('express');
const firebase = require('firebase');
admin.initializeApp();
const app = express();
const firebaseConfig = {
apiKey: "secret",
authDomain: "screams-62f3b.firebaseapp.com",
databaseURL: "https://screams-62f3b.firebaseio.com",
projectId: "screams-62f3b",
storageBucket: "screams-62f3b.appspot.com",
messagingSenderId: "secret number",
appId: "secret app id"
};
firebase.initializeApp(firebaseConfig);
// Routes
// @GET screams
// desc: get all screams
// desc: get all screams
// desc: get all screams
// privacy: public
app.get('/screams', (req, res) => {
admin.firestore()
.collection('screams')
.orderBy('createdAt', 'desc')
.get()
.then(data => {
let screams = [];
data.forEach(doc => {
screams.push({
screamId: doc.id,
body: doc.data().body,
userHandle: doc.data().userHandle,
createdAt: doc.data().createdAt
});
});
return res.send(screams);
})
.catch(err => console.error('ERROR: ', err))
});
// @GET screams
// desc: send new scream
// privacy: private
app.post('/scream', (req, res) => {
const newScream = {
body: req.body.body,
userHandle: req.body.userHandle,
createdAt: new Date().toISOString()
};
admin.firestore()
.collection('screams')
.add(newScream)
.then(doc => res.json({ message: document ${doc.id} created successfully }))
.catch(err => {
res.status(500).json({ error: 'something went wrong' });
console.error('ERROR: ', err);
});
});
// @POST /signup
// desc: sign up newUser
// privacy: public
app.post('/signup', (req, res) => {
const newUser = {
email: req.body.email,
password: req.body.password,
confirmPassword: req.body.confirmPassword,
handle: req.body.handle
};
// validate newUser data
firebase
.auth()
.createUserWithEmailAndPassword(newUser.email, newUser.password)
.then(data => {
return res.status(201).json({ message: user ${data.user.uid} signed up successfully });
})
.catch(err => {
console.error(err);
return res.status(500).json({ error: err.code });
});
});
exports.api = functions.region('europe-west6').https.onRequest(app);
````
my package.json:
{
"name": "react-app-sample",
"version": "0.1.0",
"private": true,
"dependencies": {
"@material-ui/core": "^4.11.0",
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"express": "4.16.2",
"firebase": "^7.19.0",
"firebase-admin": "^9.1.1",
"firebase-functions": "^3.11.0",
"moment": "^2.27.0",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-redux": "^7.2.1",
"react-router-dom": "^5.2.0",
"react-scripts": "3.4.3",
"redux": "^4.0.5"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.