Mi paquete.json
{ "name": "functions", "description": "Cloud Functions for Firebase", "scripts": { "lint": "eslint .", "serve": "firebase emulators:start --only functions", "shell": "firebase functions:shell", "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log" }, "engines": { "node": "16" }, "main": "index.js", "dependencies": { "axios": "^0.27.2", "firebase-admin": "^10.0.2", "firebase-functions": "^3.21.2" }, "devDependencies": { "eslint": "^8.9.0", "eslint-config-google": "^0.14.0", "firebase-functions-test": "^0.2.0" }, "private": true }Mi .eslintrc.js
module.exports = { root: true, env: { es6: true, node: true, }, extends: [ "eslint:recommended", "google", ], rules: { quotes: ["error", "double"], }, };Una versión limpia de mi index.js
const admin = require('firebase-admin') admin.initializeApp() exports.sendMessage = functions.https.onCall(async (input) => { // my code here })Error de terminal
error Parsing error: Unexpected token => ✖ 1 problem (1 error, 0 warnings) Error: functions predeploy error: Command terminated with non-zero exit code1Estoy pensando que la versión de ESLint que se está aplicando puede estar desactualizada. Si es así, ¿cómo lo actualizo? ¿Necesito usar un paquete babel-eslint (o más nuevo)? ¿Debo aplicar las reglas ES7 u 8 en su lugar, y cómo?
Solo has habilitado es6: true . Sin embargo, las funciones async son parte de ES8 (ES2017). Querrás usar algo más moderno que ES6. Alternativamente, configure las opciones del analizador específicamente.
Actualicé mi archivo .eslintrc.js
module.exports = { root: true, parserOptions: { ecmaVersion: "latest", }, env: { node: true, }, extends: [ "eslint:recommended", "google", ], rules: { quotes: ["error", "double"], }, }; De esta manera, es6 se eliminó como un valor verdadero en env y parserOptions se agregó con ecmaVersion configurado en la latest versión. Luego simplemente apliqué las reglas basadas en los elementos fallidos. Funciona, pero fue un poco complicado. Supongo que el código es más limpio al menos...