Узел 8 Функции Firebase не могут быть развернуты из CloudBuild - PullRequest
0 голосов
/ 22 октября 2018

У меня есть проект, который успешно разворачивается в функции firebase с использованием движка Node 8 из моей локальной среды разработки в firebase.Я пытался заставить его работать с CloudBuild, однако, я получаю синтаксическую ошибку из-за использования ключевого слова async:

/workspace/functions/lib/index.js:13
Step #5: app.get('XXXXXXXXX', async (req, resp) => {
Step #5: ^
Step #5: 
Step #5: SyntaxError: Unexpected token (
Step #5: at createScript (vm.js:56:10)
Step #5: at Object.runInThisContext (vm.js:97:10)
Step #5: at Module._compile (module.js:549:28)
Step #5: at Object.Module._extensions..js (module.js:586:10)
Step #5: at Module.load (module.js:494:32)
Step #5: at tryModuleLoad (module.js:453:12)
Step #5: at Function.Module._load (module.js:445:3)
Step #5: at Module.require (module.js:504:17)
Step #5: at require (internal/module.js:20:19)
Step #5: at /usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:21:11

Указывает, что механизм узла не распознает асинхронное / ожидание, то есть не Узел 8Движок установлен в package.json и работает в моей локальной среде.

"engines": {
    "node": "8"
  }

В развертывании используется контейнер Firebase, как описано в документации :

- name: 'gcr.io/[PROJECT_NAME]/firebase'
  args: [ 'deploy', '-P', 'prod', '-f', '--only', 'functions','--token', '${_FIREBASE_TOKEN}']

Может ли CloudBuild развертываться на другой / внутренней конечной точке для функций Firebase, которые не поддерживают Node8 и, следовательно, беззвучно понижать версию?

Или есть что-то еще, что я пропустил?

IЯ пытался доказать эту теорию, изменив .tsconfig на es2015 вместо es2017 и удалил раздел двигателей из package.json.В результате функция развернута в функции Node8?

Step #5: deploying functions
Step #5: functions: ensuring necessary APIs are enabled...
Step #5: functions: all necessary APIs are enabled
Step #5: functions: preparing functions directory for uploading...
Step #5: functions: packaged functions (91.42 KB) for uploading
Step #5: functions: functions folder uploaded successfully
Step #5: functions: updating Node.js 8 function XXXXXX(us-central1)...
Step #5: functions[XXXXXXX(us-central1)]: Successful update operation.
Step #5:
Step #5: Deploy complete!

Я думаю, это потому, что функция узла 8 уже существует, так что это было просто обновление, а не создание, но, возможно, указывает, что анализатор кода - это узел 6на основе и игнорирует настройки движка при развертывании через cloudbuild?

1 Ответ

0 голосов
/ 22 октября 2018

Инструменты Firebase проанализируют ваш код в поисках имен триггеров функций, и выясняется, что именно там он срабатывает.

Я предполагаю, что ваш пользовательский контейнер gcr.io/[PROJECT_NAME]/firebase использует версию Node, которая неНесовместимо с ключевыми словами ES2017 / ES8 async/await.

Вам необходимо убедиться, что ваш контейнер работает под управлением Node v7.6.0, как минимум.

Надеюсь, это поможет.

...