【问题标题】:Angular on Node JS web service - GET http://127.0.0.1 net::ERR_CONNECTION_REFUSEDNode JS Web 服务上的 Angular - GET http://127.0.0.1 net::ERR_CONNECTION_REFUSED
【发布时间】:2017-05-12 02:43:22
【问题描述】:

我正在使用 AngularJS 开发网站并将其托管在 NodeJS (Express JS) 网络服务中。 AngularJS 使用 NodeJS 服务的一些端点上的数据。换句话说,NodeJS 具有服务于 AngularJS 网页并提供所需数据的端点。

在我的虚拟机(Web 服务)上托管网页之前,我使用我的主机来托管它。然后该网页尝试向我的虚拟机端点请求数据并且它工作正常。

但是,当我将它托管在我的虚拟机(Web 服务)上并更改为在我的本地主机(http://127.0.0.1:3000/data)上请求数据时,我现在收到GET http://127.0.0.1:3000/data net::ERR_CONNECTION_REFUSED 错误。

我的尝试

首先,我认为这是因为跨源资源共享而发生的,所以我通过添加以下代码行(取自 this site)在我的 NodeJS 中启用它:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

但是,它仍然没有任何帮助。我仍然收到相同的错误消息。

后来,我想可能是我的防火墙阻止了访问。然后我关闭了我的防火墙,它仍然无法解决我的问题。

我相信这是因为我的网页试图访问其 localhost API 上的端点,这应该在我第一次尝试时通过 CORS 处理来克服。

如果不是 CORS,究竟是什么导致了这种情况?我该如何克服这个问题?任何帮助将不胜感激。

更新:Node JS 路由代码

var express = require('express');
var app =express();
app.use(express.static(path.join(__dirname, 'public')));

app.get('/admin/login/:user/:pass', function(appReq,appRes){
    appRes.status(200).send('1');
    appRes.end();
});

app.get('/*', function(appReq, appRes){
    fs.readFile('./public/index.html', function(err,data){
        if (err) {
            appRes.writeHead(500);
            appRes.end('Error loading html');
        }
        else {
            appRes.writeHead(200);
            appRes.end(data);
        }
    });
});

app.listen(port, function(){
    console.log('express app listening at http://'+hostname+":"+port+'/');
});

这是我的 AngularJS GitHub repo

【问题讨论】:

  • 您能否将代码分享到 GitHub 或类似网站上,我们可以在那里查看。上面提到的代码不足以分析您要提供的服务以及您要如何提供服务。
  • @Jeet 当然,我会将我的 Angular 上传到 github 并在此处更新我的节点 js 路由代码,因为我的节点 js 文件很大。
  • 如果您想确认问题是由于核心在您的浏览器中安装此扩展程序chrome.google.com/webstore/detail/allow-control-allow-origi/… 所以如果您想以快递方式为您的角度项目提供服务,这将允许 cors 和第二件事,您需要首先让它像“ng build --production”一样构建。你会得到“dist”文件夹。将该文件夹放在快速公共文件中或将这些文件作为静态资源提供。如果您共享您的服务器文件,它将帮助我向您展示确切的解决方案。
  • // 从根路径提供角度前端文件 app.use('/', express.static('dist', { redirect: false })); // 将虚拟 url 重写为 Angular 应用程序以启用内部页面的刷新 app.get('*', function (req, res, next) { res.sendFile(path.resolve('dist/index.html')); } ); app.listen(3000,function(req,res)
  • 天哪,只是在 url 中提到了端口

标签: javascript node.js angularjs express


【解决方案1】:

原来使用 localhost IP 是错误的。这可能是由于 JavaScript 被发送到客户端,然后浏览器将 localhost 解释为客户端的 localhost。因此,将 localhost 更改为我的实际 IP 地址解决了我的问题。

【讨论】:

  • 很好,这就是我告诉你查看ip的原因
猜你喜欢
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
  • 2018-03-03
  • 2015-04-16
相关资源
最近更新 更多