Node.js backend: guard loadServices against missing or invalid ime.json

Cerrado
#951 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Ya se ha fusionado un pull request relacionado.

  • #952 de @PCMan — fusionado

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
30/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
javascript, node.js
Área
backend

Línea de trabajo

Read node/loadServices.js, starting at loadServices and loadServiceById, and trace how input_methods entries are read and loaded. Check for missing directories, missing ime.json files, malformed JSON, and failed module loading. Done means invalid entries are skipped with warnings while valid services continue loading without an uncaught startup exception.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug node
Problem

In node/loadServices.js:L13-L17 and L33-L37, loadServices and loadServiceById iterate over entries in input_methods and directly attempt fs.readFileSync(path.join(..., 'ime.json')) followed by JSON.parse and require().

If:

  1. input_methods directory does not exist or is inaccessible,
  2. An entry in input_methods is a directory without an ime.json file (such as .git, temporary folders, documentation dirs, or build artifacts),
  3. ime.json contains malformed or unparseable JSON, or
  4. An IME module fails to load or requires an invalid path,

the Node.js backend throws an uncaught exception on startup and terminates immediately.

Affected Files
  • node/loadServices.js
Proposed Fix
  • Check fs.existsSync on input_methods directory and return an empty list/null gracefully.
  • Verify fs.existsSync for each ime.json before reading.
  • Wrap JSON.parse and require in try...catch blocks to log warnings and continue loading other valid services rather than failing the entire server.
Lenguaje dominante
C++
Estrellas
1.5k
Forks
244
Merge medio
1 d 14 h
PR fusionados (30 d)
60

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de EasyIME/PIME

Todos los issues de EasyIME/PIME

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.