Búsqueda de sitios web

typescript - Cómo resolver el error de análisis de firebase deploy: No se puede leer el archivo


Hoy intenté desplegar funciones en Firebase por primera vez.

Cuando ejecuto $ firebase deploy en la terminal, ocurrió un Error de análisis como se muestra a continuación.

Encontré que la ruta del archivo tsconfig.json es extraña.

El directorio de funciones está duplicado.

Pero no puedo encontrar la manera de recopilar el problema.

...
Running command: npm --prefix "$RESOURCE_DIR" run lint

> lint
> eslint --ext .js,.ts .

/Users/mies/FirebaseProjects/{MyProject}/functions/.eslintrc.js
  0:0  error  Parsing error: Cannot read file '/users/mies/firebaseprojects/{MyProject}/functions/functions/tsconfig.json'

/Users/mies/FirebaseProjects/{MyProject}/functions/src/index.ts
  0:0  error  Parsing error: Cannot read file '/users/mies/firebaseprojects/{MyProject}/functions/functions/tsconfig.json'

✖ 2 problems (2 errors, 0 warnings)


Error: functions predeploy error: Command terminated with non-zero exit code 1

La estructura del proyecto actual es la siguiente.

{MyProject}
 +- functions/
      +- node_modules/
      +- src/
          +- index.ts
      +- .eslintrc.js
      +- .gitignore
      +- package-lock.json
      +- package.json
      +- {serviceAccount}.json
      +- tsconfig.dev.json
      +- tsconfig.json
 +- .firebaserc
 +- .gitignore
 +- firebase.json
 +- firebase.indexes.json
 +- firebase.rules

.eslintrc.js

module.exports = {
  root: true,
  env: {
    es6: true,
    node: true,
  },
  extends: [
    "eslint:recommended",
    "plugin:import/errors",
    "plugin:import/warnings",
    "plugin:import/typescript",
    "google",
    "plugin:@typescript-eslint/recommended",
  ],
  parser: "@typescript-eslint/parser",
  parserOptions: {
    project: ["./functions/tsconfig.json", "./functions/tsconfig.dev.json"],
    sourceType: "module",
  },
  ignorePatterns: [
    "/lib/**/*", // Ignore built files.
  ],
  plugins: [
    "@typescript-eslint",
    "import",
  ],
  rules: {
    "quotes": ["error", "double"],
    "import/no-unresolved": 0,
  },
};

¿Cómo puedo arreglar la raíz /functions/functions para que sea solo /functions?

Antes de esto, ¿es la razón correcta por la que ocurrió el error?

Respuesta #1

Arreglé esto con la siguiente solución alternativa,

Hubo un problema en las rutas de parserOptions.project. Cámbialas al siguiente código:

parserOptions: {
    project: path.join(__dirname, "tsconfig.eslint.json"),
    sourceType: "module",
},

Para más información, puedes consultar este problema en Github.

Respuesta #2

Tus rutas de parserOptions.project son incorrectas. Intenta cambiarlas a:

parserOptions: {
  // No './functions/'
  project: ["tsconfig.json", "tsconfig.dev.json"],
  sourceType: "module",
},

Consulta la documentación de ESLint para obtener más información sobre parserOptions.