Firebase Functions使用Node.js 8部署报错:async/await语法解析失败
解决Firebase Functions部署时ESLint报Unexpected token function的问题
你的问题核心在于:Node.js 8本身完全支持async函数语法,但你的ESLint配置还没同步开启对ES2017特性的解析支持,所以才会抛出这个解析错误。下面是具体的解决步骤:
检查/创建ESLint配置文件
在你的functions目录下,确认是否存在.eslintrc.json(或.eslintrc.js)配置文件:- 如果没有,直接新建一个;如果已有,修改内容加入以下关键配置:
{ "env": { "node": true, "es6": true }, "parserOptions": { "ecmaVersion": 2017 }, "extends": "eslint:recommended", "plugins": ["promise"], "rules": { "promise/always-return": "error", "promise/no-return-wrap": "error" } }其中
ecmaVersion: 2017是关键,它会告诉ESLint识别ES2017标准的语法(包括async/await);env.node: true则会启用Node.js相关的全局变量与语法支持。本地验证配置有效性
修改完成后,先在本地执行npm run lint测试,如果之前的解析错误消失,说明配置生效了,再执行firebase deploy --only functions部署即可。快速生成适配配置(可选)
你也可以在functions目录下运行npx eslint --init,在向导中依次选择:- 检查语法并发现问题
- CommonJS (require/exports)
- Node.js
- 不使用TypeScript
- JSON格式配置文件
工具会自动生成适配Node.js环境的ESLint配置,同样能解决语法识别问题。
补充说明:你的代码本身没有问题,Node.js 8可以正常运行,只是ESLint默认解析规则没跟上Node版本的语法支持,调整配置后就能解决部署报错的问题。
内容的提问来源于stack exchange,提问作者Xi 张熹
相关产品推荐
相关产品推荐

