我是第一次使用 firebase,并尝试通过遵循教程并根据需要修改代码来部署云功能。我尝试使用 firebase 快速入门部署一个功能,并且运行良好。但是,当我尝试部署我的功能时,我得到了错误:
错误:
{"@type":"type.googleapis.com/google.cloud.audit.AuditLog","status":{"code":3,"message":"函数加载用户代码失败。这可能是由于用户代码中的错误。错误消息:错误:请检查您的函数日志以查看错误原因:
我正在尝试部署的代码(没有导入):
索引.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}&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"
},