让浏览器同步与ember-cli和本地主机API服务器玩得很好



我一直在尝试通过我的localhost API服务器上的ember-cli-browser-sync(通过"ember-cli-browser-sync": "git://github.com/dylanharrington/ember-cli-browser-sync.git"安装在package.json中,因为它不在npm寄存器中)让browser-sync与ember-cli玩得很好,但一直无法使其工作。

只是做

serverMiddleware: function(config) {
  config.options.liveReload = false;
  browserSync({
    injectChanges: true,
    reloadDelay:   10,
    notify:        false,
    open:          false,
    proxy: "localhost:4200"
  });
},

适用于本地设备,但在访问我的api时失败http://localhost:8000/api/1来自外部设备(iPhone)。

我尝试扩展代理设置,以包括我的本地API通过:

var url = require('url'),
    proxy = require('proxy-middleware');
serverMiddleware: function(config) {
  config.options.liveReload = false;
  var proxyOptions = url.parse('http://localhost:8000/api/1');
  browserSync({
    injectChanges: true,
    reloadDelay:   10,
    notify:        false,
    open:          false,
    proxy: {
      target: 'localhost:4200',
      middleware: [proxy(proxyOptions)]
    }
  });
});

它基本上为BrowserSync提供的我的外部URL提供API。

所以我尝试使用server:

serverMiddleware: function(config) {
  config.options.liveReload = false;
  var proxyOptions = url.parse('http://localhost:8000/api/1');
  console.log(proxyOptions);
      // proxyOptions.route = '/api';
  browserSync({
    injectChanges: true,
    reloadDelay:   10,
    notify:        false,
    open:          false,
    port: 3000,
    server: {
      baseDir: "./",
      routes: {
        "/app": "app",
        "/assets": "dist/assets",
      },
      index: "app/index.html",
      middleware: function (req, res, next) {
        console.log(req.url);
        next();
      }
    }
  });
},

它提供正确的索引和所有asset文件,但会导致ember错误。

有人有做这件事的经验吗?我下一步应该走哪条路?我是否应该尝试使用不同的NPM包来代理我的API?

我放弃了自己解决这个问题的尝试,最终只使用了XIP,这可能适合您的需求。

最新更新