Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 余烬服务和浏览器重新加载结果为;无法获取/foo";具有自定义余烬位置_Ember.js - Fatal编程技术网

Ember.js 余烬服务和浏览器重新加载结果为;无法获取/foo";具有自定义余烬位置

Ember.js 余烬服务和浏览器重新加载结果为;无法获取/foo";具有自定义余烬位置,ember.js,Ember.js,TL;DR:将自定义位置类型添加到environment.js中,然后ember-service->打开浏览器发送/foo->无法获取/foo 按照处的说明,将代码完全复制到名为app/locations/history url logging.js的文件中,并在config/environment.js中添加了一行内容,内容如下: ENV.locationType = 'history-url-logging'; 供参考,文件中给出的代码简单如下: import Ember from 'em

TL;DR:将自定义位置类型添加到
environment.js
中,然后
ember-service
->打开浏览器发送/foo->
无法获取/foo

按照处的说明,将代码完全复制到名为
app/locations/history url logging.js的文件中,并在
config/environment.js
中添加了一行内容,内容如下:

ENV.locationType = 'history-url-logging';
供参考,文件中给出的代码简单如下:

import Ember from 'ember';

export default Ember.HistoryLocation.extend({
    implementation: 'history-url-logging',

    pushState: function (path) {
        console.log(path);
        this._super.apply(this, arguments);
    }
});
我决定重新启动服务器,按照通常的
CTRL+C
ember s
执行操作,然后再次执行
ember s
。我回到位于其中一条路线上的浏览器,点击
F5
,收到一个神秘的错误:

无法获取/联系人

所以,在谷歌搜索和反复尝试之后(在这里发布了我刚才用您正在阅读的文本编辑的一个问题),我发现要修复这个错误,我所要做的就是删除配置行
ENV.locationType='history url logging'
,重新启动服务器(
ember s
),突然应用程序工作正常

更奇怪的是,如果我在
environment.js
中启动应用程序时没有这一行,那么一旦应用程序运行(浏览器窗口重新加载正常,等等),我就会重新添加一行,上面写着
ENV.locationType='history url logging'(触发实时重新加载),应用程序仍然可以正常工作!(例如,点击F5重新加载页面不会让我看到“无法获取/联系人”(或任何路由)错误。)当然,控制台会按照上述代码的预期为我提供“console.log”输出


所以,不管是长是短,使用自定义位置似乎完全搞砸了余烬服务,这真是令人伤心和沮丧!有没有办法解决这个问题?

Ember内置服务器查看environment.js locationType属性,确定它是否必须在rootURL路径之后提供路由服务。默认情况下,如果locationType为
history
,它将执行此操作。它使用字符串匹配

在您的例子中,您编写了自己的位置,因此environment.js中的locationType属性继承自HistoryLocation,现在是
历史url日志记录
。内置服务器仅凭名称无法将其识别为基于历史的位置形式。它将默认为散列位置。它不会分析你的代码

对于这种情况,我们必须帮助内置服务器理解locationType等同于历史位置。
您需要在locationType属性之后的environment.js文件中添加
historySupportMiddleware:true

页面堆栈的实现来自哪里?我认为实现字符串应该与文件名相同,这意味着
“历史url日志记录”
。很抱歉,您完全正确,这是我粘贴副本时的一个错误。在恢复代码进行测试之前,我复制了代码。在测试中,
实现
历史url日志记录
,保证它。还是一样的问题。:/我将编辑我的问题,这样其他人就不会感到困惑了-谢谢你抓住了这一点。欢迎来到堆栈溢出!你能解释一下你的解决方案为什么/如何帮助回答OP的问题吗?@MattShepherd我明白你的意思。我编辑了我的回复。希望这会有所帮助。