Сбой развертывания облачных функций: сбой функции при загрузке пользовательского кода. Сообщение об ошибке: Код в файле lib / index.js не может быть загружен.

Я обновил свой модуль firebase-functions до 3.0.1. Теперь, когда я развертываю облачные функции, я получаю предупреждающее сообщение:

⚠ функции: развертывание функций в среде выполнения Node 6, которая устарела. Узел 8 доступен и является рекомендуемой средой выполнения.

Затем развертывание завершается ошибкой:

Function failed on loading user code. Error message: Code in file lib/index.js can't be loaded.
Is there a syntax error in your code?
Detailed stack trace: /user_code/node_modules/firebase-functions/lib/providers/https.js:282
    const func = async (req, res) => {
                       ^

SyntaxError: Unexpected token (
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:549:28)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.require (module.js:504:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/user_code/node_modules/firebase-functions/lib/index.js:39:15)

Как я могу это исправить?


person Doug Stevenson    schedule 12.06.2019    source источник


Ответы (2)


В прошлом целевой средой выполнения по умолчанию был узел 6. Теперь у узла 6 истек срок действия LTS (долгосрочной поддержки). В версии CLI 6.8.0 узел 6 был объявлен устаревшим, и вместо этого вам было предложено выбрать узел 8 для развертывания. Теперь, начиная с [email protected], поддержка узла 6 полностью удалена, и вы должны явно указать узел 8 в своем package.json:

{
  // other configurations here…
  "dependencies": {
  },
  // Add an “engines” child to choose a node version, here it’s node 8.
  "engines": {
    "node": "8"
  }
}

Еще одно связанное изменение в этой версии - это зависимость от firebase-admin 8.x, которая также отказывается от поддержки узла 6.

Само сообщение об ошибке указывает на то, что ключевое слово async не распознается, что не поддерживается узлом 6.

person Doug Stevenson    schedule 12.06.2019
comment
Будет полезно увеличить ecmaVersion до 8. - person ToraCode; 13.06.2019
comment
Четкое объяснение и идеальное решение. Спасибо - person Nikhil Maheshwari; 14.03.2020
comment
Помогло использование движка с более высоким узлом. Спасибо - person Ndivhuwo; 06.11.2020

Если я использую node версии 12 и в package.json упоминается node js 8, все будет в порядке

person Satvik Kushwaha    schedule 21.09.2020