Improve the error message for missing modules
Personne n'a encore pris cette issue.
- Langage dominant
- JavaScript
- Étoiles
- 122k
- Forks
- 37.3k
- Merge moyen
- 4 j 2 h
- PR mergées (30 j)
- 283
Description
Currently, the error that is produced in case of a missing module is not really user friendly:
node:internal/process/esm_loader:74
internalBinding('errors').triggerUncaughtException(
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'not-existing-module' imported from /Users/matteo/temp/a.mjs
at new NodeError (node:internal/errors:363:5)
at packageResolve (node:internal/modules/esm/resolve:698:9)
at moduleResolve (node:internal/modules/esm/resolve:739:18)
at Loader.defaultResolve [as _resolve] (node:internal/modules/esm/resolve:853:11)
at Loader.resolve (node:internal/modules/esm/loader:89:40)
at Loader.getModuleJob (node:internal/modules/esm/loader:242:28)
at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:73:40)
at link (node:internal/modules/esm/module_job:72:36) {
code: 'ERR_MODULE_NOT_FOUND'
}
Rust for example provide more user friendly errors:
error[E0432]: unresolved import `crate::constants`
--> src/primes.rs:5:12
|
5 | use crate::constants::{FNUM, PNUM, SMAX};
| ^^^^^^^^^ maybe a missing crate `constants`?
Note that our errors do not list which line the dependency was not specified.
What do you think? I think it would improve things long term.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par suivre le chemin du module manquant dans internal/process/esm_loader et internal/modules/esm/resolve et loader, en utilisant la sortie ERR_MODULE_NOT_FOUND montrée comme référence. L’issue ne nomme pas de test et ne prescrit pas de formulation exacte ; le travail serait considéré comme terminé lorsqu’un message d’erreur plus clair, identifiant l’endroit où la dépendance a été demandée, aura été défini et implémenté, avec une couverture pour le message obtenu.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, node.js
- Domaine
- backend, developer-experience
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- Calme
- Clarté
- À clarifier
- Accessibilité débutants
- 35/100