функция асинхронной стрелки SyntaxError: неожиданный токен ( - PullRequest
0 голосов
/ 16 марта 2019

Я использую версию узла 10.15.3, версию npm 6.9.0, код VS и версию firebase-функции 2.2.0 на компьютере с Windows.Добавление async / await к моей функции app.post () приводит к следующему:

 Function failed on loading user code. Error message: Code in file 
 index.js can't be loaded.
 Is there a syntax error in your code?
 Detailed stack trace: /user_code/index.js:31
 app.post('/pay-now', 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 getUserFunction (/var/tmp/worker/worker.js:439:24)

Вот мой app.post ():

app.post('/pay-now', async (req, res) => {
    // charge user's card
    const charge = await makeCharge(req, res)
    // store order info in database, returns address of order
    const address = await storeOrder(req, res, charge.id)
    // send email to customer
    await emailHandler.sendCustomerEmail(req, res)
    // send email to company letting them know they have a new order
    await emailHandler.sendLTEmail(req, res, address, true)
    return res.sendStatus(200)
})

Я попытался удалить асинхронный & await's в приложении.post (), но потом я получаю ту же ошибку при первом использовании async в функции makeCharge.Есть идеи, что может быть не так?

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

В настоящее время по умолчанию для облачных функций используется узел 6, который не поддерживает async / await.Вам нужно отредактировать файл package.json для , предназначенного для среды выполнения узла 8 , которая использует версию JavaScript, которая имеет async / await.

Установите версию, добавивВ поле engine добавлен файл package.json, который был создан в вашей директории functions / во время инициализации.Например, если вы предпочитаете использовать только версию 8, отредактируйте файл package.json, чтобы добавить эту строку:

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

Если вы уже развернули версию функции, вам нужно будет удалить ееи разверните снова после установки этой конфигурации.

0 голосов
/ 16 марта 2019

возможно, вам стоит взглянуть здесь: Синтаксис для функции асинхронной стрелки

Нет проблем с вашим модулем, я думаю, что функция стрелки написана не очень хорошо.

РЕДАКТИРОВАТЬ:

Я не знаю много о функции стрелки, вы можете попробовать использовать "нормальную функцию" что-то вроде:

  app.post('/pay-now', async function Myfunction (req, res) {
  // do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...