微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用XMLHttpRequest

如何解决使用XMLHttpRequest

我在Node.js中使用标准的应用引擎配置。我无法使用xmlhttprequest从应用程序引擎访问ibm cloudant。

我用于来自App引擎的请求的代码如下:

var getAllDocuments = function(database,callback) {
    var xhr = new XMLHttpRequest();
    xhr.open("GET","<link>" + database + "/_all_docs?include_docs=true",false);
    xhr.setRequestHeader("Authorization",myauthenticateUser(userName,passWord));
    xhr.setRequestHeader("Content-Type","application/json");
    xhr.onreadystatechange = function (){
        if (xhr.readyState == 4 && xhr.status == 200) {
         var data = JSON.parse(xhr.responseText);
         callback(data,xhr.status);
        }
        else{
            callback(null,xhr.status);
        }
    }
    xhr.send();
} 

执行上述代码时,发生以下错误-:错误:EROFS:只读文件系统,打开'.node-xmlhttprequest-sync-11'。

仅供参考:我没有在应用引擎中保存任何临时文件

我要创建的yaml文件中是否要添加某些内容?还是其他内容

解决方法

该错误似乎是不言自明的:

错误:EROFS:只读文件系统,打开.node-xmlhttprequest-sync-11

由于使用同步请求,因此这些文件被保存下来。请查看此similar question,在此它们启动“ nodemon”,它会继续创建文件.node-xmlhttprequest-sync-1516(最后是随机数)。

另外,根据this,我发现:

从Gecko 30.0(Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27),Blink 39.0和Edge 13开始,主线程上的同步请求由于对用户体验的负面影响而被弃用。

同步XHR现在处于弃用状态。

因此,您可能会考虑将代码重组为使用异步。

我想搜索更多,但发现this entry in github issues

通常,如果您正在获取这些文件,则意味着您使用的是同步http请求,这是不可以。由于这种影响和其他原因,您不应该这样做。请检查您的代码中是否存在同步请求,然后将其删除。

如果您看到使用同步请求的Truffle代码,请告诉我们。

我认为this responds to your question

仅供参考,此文件不是生成的松露。这是因为在节点中使用了同步的http请求。

解决方案:更改为异步请求。为此,您必须更改此行

xhr.open("GET","<link>" + database + "/_all_docs?include_docs=true",false);

为此:

xhr.open("GET",true);

将标志false更改为 true 。有关更多详细信息,请查看this

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。