У меня возникают проблемы при попытке исправить эту ошибку, когда firebase возвращает и ошибка ENETUNREACH после публикации или получения запроса следующего кода:
Я использую firebase serve или firebase deploy как в powershell, так и в git bash, ноошибка все еще там.
Если кто-нибудь может сказать мне, что не так с моим кодом или моим исполнением, пожалуйста, ответьте. спасибо тебе.
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const app = require('express')();
admin.initializeApp();
const firebaseConfig = {
//apiKey info
};
const firebase = require('firebase');
firebase.initializeApp(firebaseConfig);
const db = admin.firestore();
// gets documents from database on firebase
app.get('/screams', (req, res) => {
db
.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.json(screams);
})
.catch((err) => console.error(err));
});
// creates new scream
app.post('/scream', (req, res) => {
if (req.method !== 'POST') {
return res.status(400).json({ error: 'Method not allowed' });
}
const newScream = {
body: req.body.body,
userHandle: req.body.userHandle,
createdAt: new Date().isISOString()
};
db
.collection('screams')
.add(newScream)
.then(doc => {
// use backticks because of code inside
res.json({ message: `document ${doc.id} created successfully`});
})
.catch(err => {
res.status(500).json({ error: 'something went wrong' });
console.error(err);
});
});
// Signup route
app.post('/signup', (req, res) => {
const newUser = {
email: req.body.email,
password: req.body.password,
confirmPassword: req.body.confirmPassword,
handle: req.body.handle,
};
// TODO validate data
db.doc(`/users/${newUser.handle}`).get()
.then(doc => {
if(doc.exists) {
return res.status(400).json({ handle: 'this handle is already taken' })
} else {
return firebase
.auth()
.createUserWithEmailAndPassword(newUser.email, newUser.password);
}
})
.then(data => {
return data.user.getIdToken();
})
.then(token => {
return res.status(201).json({ token })
})
.catch(err => {
console.error(err);
return res.status(500).json({ error: err.code });
});
});
exports.api = functions.region('us-east4').https.onRequest(app);
Пожалуйста, помогите мне решить эту проблему. Я использую реагировать и приложение Firebase с Express. Ошибка
i functions: Beginning execution of "api"
> FetchError: Unexpected error determining execution environment: request to http://169.254.169.254/computeMetadata/v1/instance failed, reason: connect ENETUNREACH 169.254.169.254:80
> at ClientRequest.<anonymous> (C:\Users\garyz\PycharmProjects\socialape\functions\node_modules\node-fetch\lib\index.js:1455:11)
> at ClientRequest.emit (events.js:200:13)
> at Socket.socketErrorListener (_http_client.js:410:9)
> at Socket.emit (events.js:200:13)
> at emitErrorNT (internal/streams/destroy.js:91:8)
> at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
> at processTicksAndRejections (internal/process/task_queues.js:84:9) {
> message: 'Unexpected error determining execution environment: ' +
> 'request to ' +
> 'http://169.254.169.254/computeMetadata/v1/instance ' +
> 'failed, reason: connect ENETUNREACH 169.254.169.254:80',
> type: 'system',
> errno: 'ENETUNREACH',
> code: 'ENETUNREACH',
> config: {
> url: 'http://169.254.169.254/computeMetadata/v1/instance',
> headers: { 'Metadata-Flavor': 'Google' },
> retryConfig: {
> noResponseRetries: 0,
> currentRetryAttempt: 0,
> retry: 3,
> retryDelay: 100,
> httpMethodsToRetry: [Array],
> statusCodesToRetry: [Array]
> },
> responseType: 'text',
> timeout: 3000,
> params: [Object: null prototype] {},
> paramsSerializer: [Function: paramsSerializer],
> validateStatus: [Function: validateStatus],
> method: 'GET'
> }
> }
i functions: Finished "api" in ~1s
Любая помощь будет принята с благодарностью. Спасибо!
Я попытался запустить localhost в браузере, но возникла та же проблема.
Мои ожидаемые результаты - добавить пользователей в базу данных firebase.