异步等待未在Google Cloud Functions中部署

时间:2018-11-26 01:55:44

标签: google-cloud-functions

firebase deploy给我这个错误消息:

        async function asyncFunction() {
              ^^^^^^^^

SyntaxError: Unexpected token function

这是我的代码:

async function asyncFunction() {
      await getText2Speech(word, 'mp3', 'es-ES_EnriqueVoice')
    }
asyncFunction();

getText2Speech是75行函数,当我在没有asyncawait的情况下调用它时,它可以完美运行。

我的functions/package.json中有Node.js 8运行时:

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

enter image description here

我的计算机上的节点是最新的:

node -v
v11.2.0

意外令牌是function,而不是async,这很奇怪。似乎firebase deploy可以识别async,但是语法错误? es-lint找不到我的代码有什么问题。

可能是这个问题吗?

npm list --depth 0 -g

├── UNMET PEER DEPENDENCY firebase-admin@6.2.0

npm ERR! peer dep missing: firebase-admin@~6.0.0, required by firebase-functions@2.1.0

如果我回滚到firebase-admin@~6.0.0async await会起作用吗?

2 个答案:

答案 0 :(得分:1)

问题是某些内容指向了不支持ES2017的eslint v4.5.0。我安装了eslint v5.9.0,但是eslint -v始终返回v4.5.0。我用find . -name 'eslint'删除了eslint的每个副本,其中有很多版本,以及我的所有其他计算机。 npm uninstall -g eslint不会获得eslint的每个副本。当eslint -v不返回任何内容时,则firebase deploy起作用。

答案 1 :(得分:1)

async/await正在部署在我的另一台计算机上,但是今天它停止了部署。我检查了两台计算机上package.json文件夹中的functions,但都丢失了

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

添加这一行,两台计算机现在都部署async/await。我不知道该对象是如何从package.json文件中删除的,我也不知道此修复程序是否将继续有效,但是我会全力以赴!