Expresse et Écrite de l'Erreur.de la pile et de l'Erreur.propriétés de l'état n'existent pas
Je suis en train de convertir un node.js projet de javascript en caractères d'imprimerie. J'ai été en utilisant la valeur par défaut erreur 404 catcher de Visual Studio Express 4 modèle:
//catch 404 and forward to error handler
app.use(function (req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
Cependant, je reçois le message d'erreur suivant:
Propriété de "situation" n'existe pas sur le type "Erreur".
Je reçois un message similaire si j'essaie de l'invoquer l'Erreur de l' .propriété de pile:
Propriété "pile" n'existe pas sur le type "Erreur".
Personne ne sait ce qui se passe ici?
Edit: Steve Fenton rappelle que je pourrais juste mettre le statut de l'erreur sur l'objet de réponse. Cependant, mon erreur de manipulation mécanisme utilise un processus en deux étapes:
- Créer de l'erreur 404 et définir son statut
-
La main sur les génériques suivantes gestionnaire:
app.use(function (err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); });
De sorte que le statut de l'erreur est d'abord mis sur l'objet d'Erreur, puis lisez à nouveau par le gestionnaire d'erreur pour décider de la façon de gérer l'erreur.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez dire Tapuscrit que pour votre cas d'utilisation
Error
pourrait avoir unstatus
sur elle:De sorte que vous obtenez:
Cependant, je dois dire que votre express code est non-idiomatique, mais la Machine peut le comprendre, si vous dites à ce sujet.
Vous mettre le code d'erreur sur la réponse...
La meilleure façon, à mon avis, est de ne pas désactiver les vérifications de type en définissant l'erreur de
any
, ou la création d'une nouvelleError
type de, car il en existe déjà dans@types/node
.Au lieu de cela, vous devez étendre ce type d'erreur:
Une autre option en caractères d'imprimerie:
any
complètement donne l'un des grands avantages de la Machine - type de vérification et d'application. Cette solution va à l'encontre de l'OP de l'objectif pour la commutation de JavaScript pour le Tapuscrit en premier lieu. Certains autres sont mieux, à mon avisUne autre option en caractères d'imprimerie:
C'est généralement une question de comment paresseusement d'initialiser des objets en caractères d'imprimerie.
Le moyen idéal de le faire est:
À l'aide de
any
, ou des interfaces avec les valeurs null champs, de vous laisser avec subpar et de la faiblesse des contrats.Je suis juste allé pour