Javascript 如何在Dojo的JsonRest查询的控制台中禁用错误日志记录?

Javascript 如何在Dojo的JsonRest查询的控制台中禁用错误日志记录?,javascript,dojo,Javascript,Dojo,我的项目使用JsonRest存储访问它的数据。一切都很好。问题是,当服务器返回错误时,即使调用了代码的正确部分,并且功能正常工作,对象也会将错误记录到控制台 我的代码: function loadData() { self.storeItem.query({ 'id_metric' : self.selectMetrics.value, 'id_client' : self.selectClients.value }).then(

我的项目使用JsonRest存储访问它的数据。一切都很好。问题是,当服务器返回错误时,即使调用了代码的正确部分,并且功能正常工作,对象也会将错误记录到控制台

我的代码:

function loadData() {
    self.storeItem.query({
        'id_metric' : self.selectMetrics.value,
        'id_client' : self.selectClients.value
    }).then(
        (res) => populateResults(res),
        ()=>{
            // this is called correctly...
            query('.res').forEach(domConstruct.destroy);
            domConstruct.place('<tr class="sem res"><td>No results</td></tr>', "tableLines", 'first');
        }
    );
}

如何使存储区不显示错误


我知道我可以更改服务器行为,以返回代码200而不是404的结果。但是我想要的只是使它不将错误发送到控制台。

该错误由dojo/\u base/xhr记录,dojo/store/JsonRest在内部使用该错误。我看不到一个干净的方法来抑制它,除非您准备实现自己的存储。如果你是,这就是你能做的:

有一个failOk参数,它完全可以执行您想要的操作,但是dojo/store/JsonRest不使用它,默认值为false,将错误记录到控制台。因此,您可以复制JsonRest的源代码,并在所有xhr调用中添加failOk:true。例如,在查询函数中:

    var results = xhr("GET", {
        url: this.target + (query || ""),
        handleAs: "json",
        headers: headers,
        failOk: true
    });

您仍然可以处理错误处理函数中的错误。

您可以发布您的代码完整的JsonRest代码吗?PS:我可以问您。。。从您的代码片段中,我看到您正在代码中使用箭头函数ES6语法。。。。您在使用dojo构建工具构建应用程序时有任何问题吗?我仍然不使用dojo构建工具。还是新手。抱歉。出于好奇,我测试了一个dojo应用程序,它使用了一些ES6语法,如arrow function=>不幸的是,在正常配置下,它破坏了dojo构建。我希望能对其他人有所帮助,那么你能看看JsonRest的完整代码吗?你是说实例化?这可能是一种方式。我不认为Dojo代码中的一个小改动会有多大影响。但我认为我们安装了不同版本的Dojo。dojo/_base/xhr在我的项目中有这样的内容:我找不到放置此选项的位置。我尝试了这一行:dojo.xhrGet{url:url,sync:true,load:functiontext{。但是它不起作用。我怎么能在这个版本中做到这一点呢?更改是针对dojo/store/JsonRest的,而不是针对dojo/_base/xhr的。您发布的版本也有failOk选项。另外,如果您使用declare创建自己的存储,而不是更改dojo源代码,那么会更干净。我将JsonRest代码复制到了一个lib文件夹中。更改了类na我向JsonRestNoError求助,并使用了该类。效果很好。谢谢。
    var results = xhr("GET", {
        url: this.target + (query || ""),
        handleAs: "json",
        headers: headers,
        failOk: true
    });