2015-05-15 22 views
8

Vấn đề:Ember CLI với Multiple Proxies

Tôi có một ứng dụng Ember CLI rằng sẽ tiêu thụ nhiều API, mà tôi cần phải proxy để trong chế độ phát triển.

Bối cảnh:

Tôi có một api di sản đó cho thấy dịch vụ tại /api chạy trên máy tính phát triển địa phương của tôi tại localhost:3000

Tôi có một api mới cho thấy dịch vụ tại /myapp/api/v1. Các dịch vụ này gần đây đã được trích xuất từ ​​ứng dụng cũ và bao gồm phần lớn các dịch vụ ứng dụng được ứng dụng ember sử dụng.

Ứng dụng ember sử dụng baseURL của /myapp, vì nó đang được triển khai vào thư mục phụ.

Tôi đã tạo hai http-proxys bằng cách sử dụng ember generate http-proxy. Chúng nằm ở /server/proxies/api.jsserver/proxies/myapp/api/v1.js

api.js

var proxyPath = '/api'; 
module.exports = function(app) { 
    var proxy = require('http-proxy').createProxyServer({}); 
    proxy.on('error', function(err, req) { 
    console.error(err, req.url); 
    }); 
    app.use(proxyPath, function(req, res, next){ 
    // include root path in proxied request 
    req.url = proxyPath + '/' + req.url; 
    proxy.web(req, res, { target: 'http://localhost:3000' }); 
    }); 
}; 

myapp/api/v1.js

var proxyPath = 'myapp/api/v1'; 
module.exports = function(app) { 
    var proxy = require('http-proxy').createProxyServer({}); 
    proxy.on('error', function(err, req) { 
    console.error(err, req.url); 
    }); 
    app.use(proxyPath, function(req, res, next){ 
    req.url = proxyPath + '/' + req.url; 
    proxy.web(req, res, { target: 'http://localhost:4100' }); 
    }); 
}; 

Proxy đầu tiên, đến/api, dường như làm việc, thứ hai API, đến/myapp/api/v1/bất kỳ lỗi nào.

Nó dường như không được sử dụng hoặc xem xét. Khi tôi chạy, ví dụ một POST để myapp/api/v1/phiên, nó chỉ nói không thể POST. Khi tôi đặt trình sửa lỗi trên các hàm proxy.on và app.use, chúng sẽ không bao giờ bị tấn công.

Tôi sẽ làm gì sai ở đây?

Trả lời

6
var proxyPath = 'myapp/api/v1'; 

Bạn đang thiếu một / vào đầu của chuỗi;)

+1

FYI, tôi không gửi tiền thưởng, vì vậy nó sẽ lên đến @Asherlc trao nó :) – DVG

Các vấn đề liên quan