【发布时间】:2017-09-19 14:34:27
【问题描述】:
我有一个 Node 应用程序作为后端,我想将它与 AngularJs 前端连接起来。它们位于同一个 repo 下,位于不同的文件夹中。我的 Node 应用运行良好,我可以使用 Postman 和浏览器与之交互。
我采用了代理方法,创建了一个简单的 Node 应用程序来使用 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)
我的后端应用没有得到任何响应。我尝试将代理配置上的主机更改为虚拟主机,但出现了另一个错误,确认请求已被代理。
那么,我在这里错过了什么?
【问题讨论】:
标签: angularjs node.js proxy koa