У меня типичная (по многим сообщениям) проблема с холодной загрузкой в облачных функциях.Решение, которое казалось обещанным, предлагает импортировать / экспортировать только фактически выполняемую функцию, как можно увидеть здесь:
https://github.com/firebase/functions-samples/issues/170#issuecomment-323375462
if (!process.env.FUNCTION_NAME || process.env.FUNCTION_NAME === 'sendFollowerNotification') {
exports.sendFollowerNotification = require('./sendFollowerNotification');
}
Это пример Javascript, но я 'используя машинопись.Я пробовал несколько вариантов, и, хотя некоторые сборки, в конце концов, я всегда застрял с моей функцией не экспортируемой и развертывания, предупреждая меня, что я собираюсь удалить существующую функцию.
ЭтоЭто одна из многочисленных попыток:
if (!process.env.FUNCTION_NAME || process.env.FUNCTION_NAME === 'generateInviteURL') {
import ('./invite_functions').then ((mod) => { console.log ("mod follows" ); console.log (mod); exports.generateInviteURL = functions.https.onRequest( mod.generateInviteURL ); } )
.catch ((err) => {console.log ("Trying to import/export generateInviteURL ", err);}) ;
}
Как уже упоминалось, во время развертывания я получаю предупреждение об удалении функции.
Мне удалось «избежать» этогосообщение с чем-то вроде этого:
console.log ("Function name: ", process.env.FUNCTION_NAME);
function dummy_generateInviteURL (req, res) { ; }
exports.generateInviteURL = functions.https.onRequest( dummy_generateInviteURL );
if (!process.env.FUNCTION_NAME || process.env.FUNCTION_NAME === 'generateInviteURL') {
console.log ("Doing the good import");
import ('./invite_functions').then ((mod) => { console.log ("mod follows" ); console.log (mod); exports.generateInviteURL = functions.https.onRequest( mod.generateInviteURL ); } )
.catch ((err) => {console.log ("Trying to import/export generateInviteURL ", err);}) ;
}
console.log ("Exported");
console.log (exports.generateInviteURL);
Какая идея, конечно, что пустая функция всегда будет экспортироваться, но будет заменена реальной, если она вызывается.
В этом случае журналы выглядят так:
generateInviteURL Function name: generateInviteURL generateInviteURL
generateInviteURL Exported generateInviteURL
{ [Function: cloudFunction] __trigger: { httpsTrigger: {} } }
Итак, первая часть выглядит многообещающе (переменная среды определена), затем импорт что-то делает (входит в блок then, а не в catch), но экспортируетсяпеременная не заменяется.
Я не уверен, является ли это проблемой TypeScript, проблемой Firebase или разработчиком - возможно, я просто упускаю что-то очевидное.
Итак, вопрос - как мне избежатьимпортировать / экспортировать что-либо, что мне не нужно для каждой конкретной функции?