“[SyntaxError: Unexpected end of input]” à l'Aide de Express pour Node.js
Le suivant fonctionne parfaitement bien pour moi:
app.get('/doi/meta/:doiName1/:doiName2', function(request, response) {
var path = '/doi/json?doi='+request.params.doiName1+'/'+request.params.doiName2;
//etc.
Par exemple, je peux appeler:
curl -X GET http://localhost:1337/doi/meta/09.1010/9347426
et obtenir la réponse que j'attends. (Notez le nom de l'objet que je suis interrogation a un slash.)
Car il est possible de la variabilité dans les noms d'objet, j'ai besoin de modifier le serveur pour que je puisse la structure de mes requêtes comme ceci:
curl -X GET http://localhost:1337/doi/meta?doiName=09.1010/9347426
J'ai essayé de nombreuses approches, mais j'ai invariablement recevoir la réponse suivante:
[SyntaxError: Unexpected end of input]
qui me laisse croire que je suis à la recherche pour le problème dans le mauvais endroit. Cependant, je peux changer le serveur de code à la ci-dessus et il fonctionne très bien. Mon code ressemble à ceci:
app.get('/doi/meta', function(request, response) {
//var path = '/doi/json?doi='+request.params.doiName1+'/'+request.params.doiName2;
var args = url.parse(request.url, true).query;
var path = 'doi/json?doi='+args['doiName'];
console.log('path is '+path);
//etc.
La console.journal d'instruction n'est jamais atteint. Quel est le problème qui est à l'origine de cette Fin Inattendue de l'erreur de Saisie?
- Pourquoi êtes-vous l'analyse
request.url
lorsque Exprimer le fait déjà pour vous? Les paramètres de la requête sont disponibles sur lereq.query
de l'objet.
Vous devez vous connecter pour publier un commentaire.
Un
SyntaxError: Unexpected end of input
erreur signifie, en général, soit il vous manque une parenthèse fermante, parenthèse, crochet, ou de nature similaire quelque part dans votre code ou que vous essayez deJSON.parse()
une chaîne de caractères qui est absent de tels caractères.Exécuter votre code/chaîne JSON via un javascript linter (par exemple jshint) pour trouver les erreurs de syntaxe.
Ce qui se passait était que plusieurs centaines de lignes ci-dessus dans le même fichier, il y avait un autre OBTENIR de l'auditeur:
Ce bloc était d'attraper les appels de ce genre:
et d'aller le chercher pour un utilisateur nommé meta. Naturellement, ce phénomène ne se produit pas lorsque j'ai structuré l'OBTENIR bloc comme ceci:
Je vais aborder cette question par "l'approfondissement" le premier auditeur au-dessus de quelque chose comme...
Une autre leçon apprise, c'est de grouper des appels d'URL dans le même fichier.
Merci pour les réponses.