“使用nodejs app.get或http-server弃用主线程上的同步XMLHttpRequest”

时间:2015-02-15 22:06:26

标签: node.js express xmlhttprequest synchronous httpserver

我在AngularJS中为node.js中的后端创建了一个前端。我可以选择两个简单的node.js前端服务器来为前端网页提供服务:一个是Express中的简单app.get,另一个是使用http-server包。

无论我使用哪种前端服务器代码,我都会在Chrome中收到以下浏览器控制台消息:

  

主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。如需更多帮助,请查看http://xhr.spec.whatwg.org/

为了确保这不是由任何Angular(或Bootstrap)引起的,我已将我的网页缩减为以下内容:

<!DOCTYPE html>
<html lang="en" >
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>zoneshark</title>
  </head>
  <body>
    <h1>Hello, world!</h1>
  </body>
</html>

为什么我收到错误消息? http-server总是会导致此错误吗?如何使用nodejs设置前端服务器,以便不会发生此错误(这个简单的“hello world”页面将是一个起点)?

我用作http-server的替代服务器代码是:

var express = require('express');
var app = express();

app.get('/', function(req,res) {
  res.sendFile('./index.html', {root: __dirname});
});

app.get(/^(.+)$/, function(req, res) {
  res.sendFile('./' + req.params[0], {root: __dirname});
});

app.listen(80);

另一个奇怪的地方。在http-server控制台中,看起来http-server正在提供两个资源:/index.html如预期的那样,还有/favicon.ico - 这很奇怪,因为这里没有提到。

最后的奇怪之处:这只发生在Chrome上。从IE浏览器没有问题,并且没有要求favicon.ico。

在Chrome中,我已经清除了所有浏览数据,但自动填充表单数据,密码和内容许可证除外。

1 个答案:

答案 0 :(得分:4)

感谢您的评论。我已经跟踪了这个问题,它在Chrome中 - 更具体地说是扩展程序。

问题在于我有一个扩展名:PropertyWizza v2.0。禁用此扩展程序可以解决此问题。我现在将其卸载,因此它不会干扰我的开发消息。

这一切都是因为我注意到我在访问任何网站时遇到了同样的问题 - 例如BBC和GitHub - 从家里的任何一台电脑上都可以,只要我使用Chrome。

我对第一次开始调试前端的人的建议是在开始之前检查你在所有浏览器中的其他网站上出现的错误。这将为您的测试提供“控制”。