2017-09-19 6 views
0

私はバックエンドとしてNodeアプリケーションを持っており、AngularJsフロントエンドに接続したいと思っています。彼らは、同じレポの下に、別のフォルダに座っています。私のNodeアプリケーションは正常に動作していますが、私はPostmanとブラウザを使って対話できます。frontend + backend:koa-proxyエラー404

私は、プロキシアプローチと一緒に行った、次のようにkoaを使用してバックエンドを提供するために、単純なノードのアプリを作成しました:

module.exports = (function() { 
    'use strict'; 

    var koa = require('koa'); 
    var serve = require('koa-static'); 
    var proxy = require('koa-proxy'); 
    var logger = require('koa-logger'); 
    var app = new koa(); 

    app.use(logger()); 

    app.use(proxy({ 
     host: 'http://0.0.0.0:8080/', 
     match: /^\/api\// 
    })); 

    app.use(serve('./app')); 

    app.listen(8000); 

})(); 

アイデアは、バックエンドにプロキシする/mediaに対するすべての要求発行を持つことです。 AngularJSコードは次のようになります。

'use strict'; 

angular.module('myApp.polls', ['ngRoute', 'ngResource']) 

.config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/polls', { 
    templateUrl: 'polls/polls.html', 
    controller: 'PollsCtrl', 
    controllerAs: 'vm' 
    }); 
}]) 

.controller('PollsCtrl', ['$resource', function($resource) { 
    var vm = this; 

    vm.polls = []; 

    function getPolls() { 
    $resource('/api/polls').query({}, {}).$promise.then(
     (polls) => { 
     vm.polls = polls; 
     }, 
     (error) => { 
     console.log(error); 
     } 
    ); 
    } 

    getPolls(); 
}]); 

しかし、私はページをロードするとき、私は、コンソール上で404を取得:

angular.js:12701 GET http://localhost:8000/api/polls 404 (Not Found) 

そして、私のバックエンドアプリは任意の応答を取得できませんでした。私は何かダミーにプロキシ設定のホストを変更しようとし、要求がプロキシされることを確認する別のエラーが発生しました。

ここで私は何が不足していますか?

答えて

0

私の問題は、確かに、私はこのように私はそれはそれは私がいることに気づいていることだけにしていた404

を得たということだった知らなかった、私のバックエンドアプリケーションにロガーを追加逃した404でした転送された要求にはまだ/apiのパスがあり、バックエンドによってサービスされていませんでした。だから、すべての/apiコールを適切なものにリダイレクトするだけで問題はなくなりました。

app.all(/^\/api/, function(req, res) { 
    res.redirect(req.originalUrl.replace('/api', '')); 
});