【发布时间】:2019-07-06 15:38:49
【问题描述】:
我正在使用 AWS Cloud9,它一直很顺利,但现在我试图公开我的 URL,以便我可以在 Postman 中发出 HTTP 请求,但我真的很挣扎。我是一个初学者的全栈开发人员,如果能提供任何帮助,我将不胜感激。
谢谢, 史蒂文
我正在尝试正确遵循本指南:
https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html
具体来说,我进入第 4 步,它要求我更改代码中的 IP 地址。当我将 Node JS Express 应用的 app.listen IP 地址更改为我的 EC2 实例 IP 地址时,出现错误。
我认为我已经成功地将我的 EC2 实例公开访问,只是我的代码没有正确监听(这些步骤似乎很容易遵循,但我可能错了。
var express = require("express");
var app = express();
app.set("view engine", "ejs");
app.get("/", function (req, res){
res.render("helloWorld");
});
app.listen(8080, '**AWS EC2 instance IP**', function(){
console.log("Server Has Started!");
});
当我没有在 app.listen 中指定 IP 地址时,它运行良好,但是当然我只能从同一浏览器中的不同选项卡访问服务器。以下是我在运行包含 AWS EC2 实例 IP 的代码时控制台输出的内容:
events.js:174
throw er; // Unhandled 'error' event
^
Error: listen EADDRNOTAVAIL: address not available **AWS EC2 instance IP**:8080
at Server.setupListenHandle [as _listen2] (net.js:1262:19)
at listenInCluster (net.js:1327:12)
at doListen (net.js:1460:7)
at process._tickCallback (internal/process/next_tick.js:63:19)
at Function.Module.runMain (internal/modules/cjs/loader.js:832:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
Emitted 'error' event at:
at emitErrorNT (net.js:1306:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
[... lines matching original stack trace ...]
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
【问题讨论】:
-
试试
app.listen(8080, function(){- 确保c9没有在那个端口上运行,否则你需要为节点应用选择另一个 -
显然,错误是说
**AWS EC2 instance IP**不是IP 地址。Error: listen EADDRNOTAVAIL: address not available **AWS EC2 instance IP**:8080假设/希望那是您只是在编辑 IP -
感谢您的意见。是的,这只是我在编辑 IP,我敢肯定在安全方面还不擅长哈哈。奇怪的是,您在 IP 错误中说该地址不可用,因为它应该可用。我已经转到 AWS 控制台 -> 安全组 -> 入站并添加了入站规则 -> 类型:自定义 TCP 规则,协议:TCP,端口范围:8080 - 8082,源:0.0.0.0/0。那应该打开它。我也尝试过 app.listen(8081...) 来更改端口(假设您的意思是 c9 在 8080 上运行),但这也没有解决这个问题。对此有什么想法?
-
我从第一天开始就使用 c9,在亚马逊获得它之前对它进行了 beta 测试,收到了 100 多页的 pdf 文件,解释了如何设置,然后因为亚马逊已经毁了,所以很快就离开了用户体验,只需启动像旧 c9 这样的工作区。我做了一个bash script 来安装在普通的vps上。 c9 是一个 nodejs 应用程序,它运行在一个端口上,所以你需要检查它是否没有冲突。 EADDRNOTAVAIL是说你输入的ip不存在,所以我建议不要给你的快递加IP。
-
打开你的 EC2 并查看它的端口,但很可能他们在他们给你的随机生成的域上进行反向代理,并将其转发到错误的端口
标签: node.js express amazon-ec2 aws-cloud9