2017-10-16 2 views
0

Serveur moyen avec 2+ angulaire. J'ai un dataservice.js qui demande un get au serveur, pour recevoir une réponse json du http://localhost:3000/server/routes/api/test.js Cela me donne une erreur 500 vue moteur non sélectionné, Ma compréhension est angulaire ne nécessite pas de moteur de vue? Comme l'angulaire/navigateur prend soin de cela.le format json valide donne l'erreur "<" pendant l'analyse également voir l'erreur du moteur 500 en utilisant la pile moyenne angulaire 2+

D'une certaine façon, le routage ne semble pas fonctionner quand je fais un getter à l'API.

Les routes angulaires fonctionnent avec les composants html, mais via le service de données, une requête get sur le mongodb ne fonctionne pas non plus. Le get/test renvoie le plus souvent l'erreur 500 aucun moteur de vue sélectionné.

S'il renvoie quelque chose, il renvoie un message d'erreur "<" qui n'est pas au format jsn.

Comment puis-je m'assurer que le routage fonctionne pour mes messages get et post et qu'ils sont renvoyés au format json et non en HTML. Et comment puis-je comprendre qu'il utilise le routage correct? Je doute en quelque sorte que le routage pour les messages get/post semblent utiliser express plutôt que les modules angulaires

Je suis assez nouveau pour empiler débordement/Serveur moyen, donc si vous avez besoin de plus d'informations s'il vous plaît faites le moi savoir.

FYI J'ai été en mesure d'obtenir un fichier json du serveur (pas la base de données) via un get. Cela a fonctionné. Alors, pourquoi est-ce un accès à la base de données ne semble pas fonctionner et la même question sur pourquoi je ne peux pas sembler obtenir une réponse JSON de la http://localhost:3000/server/routes/test/api.js dans l'API.

J'ai passé 2 jours complets de dépannage à aucun résultat.

in my api.js 

router.get ('/test', function (req, res, next) { 
res.json({'testMessage': 'everything is going ', 'someNumber': 457}); 
    }); 

Dans les server.js

<!-- end snippet --> 
    <!-- begin snippet: js hide: false console: true babel: false --> 
    <!-- language: lang-js --> 
    var express = require('express'); 
    var path = require('path'); 
    var favicon = require('serve-favicon'); 
    var logger = require('morgan'); 
    var bodyParser = require('body-parser'); 
    var morgan = require ('morgan'); 
    var mongoose = require('mongoose'); 
    var flash = require('connect-flash'); 
    var chat = require('./server/routes/chat'); 
    var app = express(); 

    var passport = require ('passport'); 
var cookieParser = require ('cookie-parser'); 
var session = require ('express-session'); 
var config = require ('./config/database'); 
var engines = require('consolidate'); 
var mongoose = require('mongoose'); 
var router = express.Router(); 
// this is where I set up the routing for the api 
// in the root of the project I created server directory and 
// within it a routes directory that holds the api.js 
var api = require('./server/routes/api'); 


mongoose.Promise = require ('q').Promise; 

require('./config/passport')(passport); 
app.use(logger('dev')); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({'extended':'true'})); 
app.use(express.static(path.join(__dirname, 'dist'))); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(cookieParser()); 
app.use(morgan('dev')); 
app.use(session({ 
secret: 'secret123', 
resave: true, 
saveUnitialized: true 
})); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(flash()); 
//this is where I set up the routing is something wrong here? 

app.get('*', (req, res) => { 
res.sendFile(path.join(__dirname, 'dist/index.html')); 
}); 
app.use('api', api); 
+0

Avez-vous essayé d'utiliser l'API directement à partir du navigateur? Comme il s'agit d'un appel GET, vous pouvez simplement publier l'URL dans l'adresse de recherche et inspecter le résultat. Il semble que le problème ne soit pas dans votre code Angular, mais dans votre implémentation d'API, mais vous devriez le vérifier. –

+0

Je l'ai vérifié dans le navigateur, ce qui me renvoie généralement l'erreur 500 mais jamais les résultats du fichier josn, je vois une sortie html quand je vérifie le débogueur. Est-ce que les cors d'usng m'aideront? Il suffit de lire ce post: https://stackoverflow.com/questions/30216583/how-to-enable-cors-in-mean-stack-web-app. ne pouvait pas avoir de cors ou en ajoutant spécifiquement .json à la demande résoudre mon problème. – oudekaas

+0

Cela nous indique que le problème est du côté du serveur. Utilisez le débogueur ou consultez les journaux pour avoir une idée. –

Répondre

0

tout le monde thx, je me suis déplacé

app.get('*', (req, res) => { 
res.sendFile(path.join(__dirname, 'dist/index.html')); 
}); 

ci-dessous

app.use('api', api); 

et changé à:

app.use('/api', api); 

Problème résolu, si app.get ('*') est lu en premier, il enverra toutes les requêtes à index.html à la place. Alors assurez-vous que tous les autres routages vont au-dessus.