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.
