【问题标题】:ember demo ember-cli-mirage doesn't work on server without backendember 演示 ember-cli-mirage 在没有后端的服务器上不起作用
【发布时间】:2016-03-20 02:56:52
【问题描述】:

我正在准备我的新 ember 应用程序的演示,暂时将其部署到静态 http 服务器,没有适当的后端。

我已将项目配置为从 mirage 获取数据,并且它在本地运行良好。

问题是当我将它上传到我的http服务器时,海市蜃楼似乎没有工作,并且演示引发:

vendor-1bce2a3….js:11 Error while processing route: activities Ember Data Request GET /activities returned a 404
Payload (text/html)
[Omitted Lengthy HTML] Error: Ember Data Request GET /activities returned a 404
Payload (text/html)
[Omitted Lengthy HTML]
    at new Error (native)
    at Error.r (http://www.my-domain.com/myproject/assets/vendor-1bce2a36ef171f16e76daffe157c9b37.js:8:14790)
    at Error.n (http://www.my-domain.com/myproject/assets/vendor-1bce2a36ef171f16e76daffe157c9b37.js:19:25963)
    at e.default.r.default.extend.handleResponse (http://www.my-domain.com/myproject/assets/vendor-1bce2a36ef171f16e76daffe157c9b37.js:22:29329)
    at c.error (http://www.my-domain.com/myproject/assets/vendor-1bce2a36ef171f16e76daffe157c9b37.js:22:29898)
    at u (http://www.my-domain.com/myproject/assets/vendor-1bce2a36ef171f16e76daffe157c9b37.js:2:9669)
    at Object.c.fireWith (http://www.my-domain.com/myproject/assets/vendor-1bce2a36ef171f16e76daffe157c9b37.js:2:10437)
    at n (http://www.my-domain.com/myproject/assets/vendor-1bce2a36ef171f16e76daffe157c9b37.js:3:13352)
    at XMLHttpRequest.<anonymous> (http://www.my-domain.com/myproject/assets/vendor-1bce2a36ef171f16e76daffe157c9b37.js:3:19180)

这是我的 mirage 配置:

// app/mirage/config.js
export default function() {

  this.get('/activities', function(db, request) {
    return { 'activity': db.activity };
  });

  this.get('/activities/:id', function(db, request) {
    var id = request.params.id;
    return { 'activity': db.activity.find(id) };
  });
}

它可以在我的本地机器上找到,但它不能在 http 服务器上工作,关于如何让演示工作的任何想法?

谢谢,

【问题讨论】:

  • 您尝试使用的服务器是否在 Apache 上运行? Nginx? IIS?
  • 我认为它是一个 Apache 它是这些 Web 主机之一,您可以在其中发布 PHP 网站,我在根目录中有一个 wordpress 应用程序,并在其中创建了一个目录并尝试通过以下方式访问它:@987654323 @

标签: ember.js ember-cli-mirage


【解决方案1】:

默认情况下,Mirage 在production 构建中被禁用。您可以使用 ENV 选项启用它:

// app/config/environment.js
...
if (environment === 'production') {
  ENV['ember-cli-mirage'] = {
    enabled: true
  }
}

有关更多信息,请参阅文档:http://www.ember-cli-mirage.com/docs/v0.1.x/server-configuration/#enabled

【讨论】:

  • 感谢您,但我收到以下错误:mirage/config.js: line 3, col 7, 'environment' is not defined.mirage/config.js: line 4, col 5, 'ENV' is not defined. 有什么想法吗?
  • 谢谢,实际上要更改的文件是config/environment.js,如此处所述:http://www.ember-cli-mirage.com/docs/v0.1.x/server-configuration/ 感谢您给我提示。
  • 其实还是不行,我想是因为我服务器上的应用程序在域的子目录中,所以海市蜃楼找不到它,我该如何在海市蜃楼中配置命名空间如果环境是生产环境?
  • Mirage 完全在浏览器中运行,它永远不会访问您的实际服务器。但是,如果您已将 Ember 应用程序配置为在生产环境中向不同的域/命名空间发出 XHR 请求,则需要告知 Mirage。将您应用的配置导入mirage/config.js 并根据其environment 设置namespace
  • 谢谢,我进行了配置,但仍有问题,我打开了另一个问题的详细信息。 stackoverflow.com/questions/36113930/…
【解决方案2】:

既然你说你可以使用 PHP,那么你很可能使用 Apache,并且需要更改它处理请求的方式以使用 html5 pushState ...如果你的 /myproject 中还没有 .htaccess 文件目录,创建它并让它包含:

FallbackResource /myproject/index.html

这将使 Apache 将对不存在的事物(通常会导致 404)的任何请求传递到指定的路径...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2019-07-31
    • 1970-01-01
    相关资源
    最近更新 更多