# #typescript #google-cloud-functions #firebase-cli
Вопрос:
Я впервые использую firebase и пытаюсь развернуть облачную функцию, следуя логу с учебником и изменяя код по мере необходимости. Я попытался развернуть функцию с помощью быстрого запуска firebase, и все прошло хорошо. Однако, когда я пытаюсь развернуть свою функцию, я получаю ошибку:
ошибка:
{«@тип»:»type.googleapis.com/google.cloud.audit.Журнал аудита»,»статус»:{«код»:3,»сообщение»:»Сбой функции при загрузке пользовательского кода. Вероятно, это связано с ошибкой в пользовательском коде. Сообщение об ошибке: Ошибка: пожалуйста, изучите журналы своих функций, чтобы узнать причину ошибки:
Код, который я пытаюсь развернуть (без импорта):
ИНДЕКС.TS:
admin.initializeApp({
credential: admin.credential.applicationDefault()
});
dotenv.config();
const app = express();
const BASE_URL = `http://api.aviationstack.com/v1/flights?access_key=${process.env.ACCESS_KEY}amp;flight_iata=`
app.get("/:flightiata", async (req, res) => {
const input = req.params.flightiata;
if (typeof (input) === 'undefined') {
res.status(400).send(getError(Errors.MISSING_PARAMETER));
}
const isValid: Joi.ValidationResult = userInputValidator.validate(input);
if (isValid.error) {
res.status(400).send(getError(Errors.INVALID_INPUT, isValid.error.message));
}
try {
const apiResponse = await axios.get(`${BASE_URL}${input}`);
const response: FlightData = {
flightIata: apiResponse.data.data[0].flight.iata,
flightDate: apiResponse.data.data[0].flight_date,
flightStatus: apiResponse.data.data[0].flight_status,
departureAirport: apiResponse.data.data[0].departure.airport,
departureIata: apiResponse.data.data[0].departure.iata,
arrivalAirport: apiResponse.data.data[0].arrival.airport,
arrivalIata: apiResponse.data.data[0].arrival.iata,
departureGate: apiResponse.data.data[0].departure.gate,
departureScheduleTime: apiResponse.data.data[0].departure.scheduled
}
res.status(200).send(response)
} catch (error) {
res.status(500).send(getError(Errors.INTERNAL_SERVER_ERROR, error as string));
}
});
export const flightAPI = functions.https.onRequest(app);
Когда я запускаю его локально, все идет хорошо, и это пример вывода из API
ПРИМЕР ВЫВОДА:
{
"flightIata": "AD2933",
"flightDate": "2021-10-04",
"flightStatus": "landed",
"departureAirport": "Afonso Pena International Airport",
"departureIata": "CWB",
"arrivalAirport": "Salgado Filho",
"arrivalIata": "POA",
"departureGate": "12",
"departureScheduleTime": "2021-10-04T17:25:00 00:00"
}
Если это важно, есть мой package.json
ПАКЕТ.JSON:
"dependencies": {
"axios": "^0.21.4",
"dotenv": "^10.0.0",
"firebase-admin": "^9.8.0",
"firebase-functions": "^3.15.7"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^4.29.2",
"@typescript-eslint/parser": "^4.29.2",
"eslint": "^7.32.0",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-plugin-import": "^2.24.1",
"firebase-functions-test": "^0.2.0",
"joi": "^17.4.2",
"typescript": "^3.8.0"
},
Комментарии:
1. Не могли бы вы проверить журналы для этой функции
firebase functions:log --only <FUNCTION_NAME>
и предоставить нам эту информацию?