Сбой развертывания облачных функций: «Ошибка при загрузке пользовательского кода. Сообщение об ошибке: невозможно загрузить код из файла lib / index.js». - PullRequest
2 голосов
/ 13 июня 2019

Я обновил свой модуль firebase-functions до 3.0.1.Теперь, когда я внедряю Cloud Functions, я получаю предупреждение:

⚠ functions: Развертывание функций в среде выполнения 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)

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

1 Ответ

7 голосов
/ 13 июня 2019

В прошлом узел 6 был целевым временем выполнения по умолчанию. Теперь у узла 6 истек срок действия LTS (долгосрочная поддержка). В CLI версии 6.8.0 узел 6 устарел, и вместо этого вам было предложено настроить узел 8 для развертывания. Теперь, начиная с firebase-functions@3.0.0, поддержка узла 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.

...