【问题标题】:Cannot GET / Node.js when publish with azure [duplicate]使用 azure 发布时无法 GET / Node.js [重复]
【发布时间】:2017-12-11 11:35:04
【问题描述】:

我只是在发布到 azure 时遇到了问题。它说:我打开网站时无法获取/。

我使用带有 node.js、angular.js 和 loopback(API) 的静态站点

这里是我的客户端(site.js):

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

app.use(express.static(__dirname + '/Public'));

var server = app.listen(1338, function() {
  console.log('Listening on port %d', server.address().port);
});

Public文件夹中有index.html。

这是我的 Package.json :

{
  "name": "angular-site",
  "version": "1.0.0",
  "description": "static server to server Node.js",
  "main": "site.js",
  "author": "Jordan Leonardi",
  "dependencies": {
    "express": "^4.8.5"
  }
}

当我尝试访问 localhost 时,它看起来很好,但是当我尝试访问 Azurewebsites 时,它给了我一个错误“Cannot GET /”。 .

【问题讨论】:

  • 你在捕获.get吗?如app.get('/', (req, res) => {});
  • 正如其他答案所提到的(例如我标记为副本的那个),Web 应用程序只能侦听端口 80 和 443(从外部),您必须从环境。你不能简单地监听 1338 端口。

标签: javascript angularjs node.js azure loopback


【解决方案1】:

此外,当您将应用部署到 Azure App Service、Heroku 等云服务时,您应该使用 process.env.PORT || 1338 而不是自定义端口 1338

【讨论】:

    【解决方案2】:

    您似乎没有为/ 设置路由。 当被要求时,您当前的实现将仅返回 /Public 目录中的文件。但是没有分配根路由。

    你可以使用:

    app.get('/', (req, res) => res.send('Hello World'));
    

    【讨论】:

    • 所以如果我在 /Public 目录中有 index.html ,它会像这样吗? app.get('/index.html', function(req, res) { res.send('index.html') })
    • @j.lo 您的索引页面将自动启动,您的服务器需要能够解释对mywebsite.com 的请求,在您的情况下将是/。您可以使用 tbking 提供的代码来处理。
    • 正如@JayGould 所说,/Public 目录中的任何内容都将被自动处理。但是没有的东西必须通过这样的代码来处理。在这种情况下,它是您网站的登录页面。所以mywebsite.com/最后有/,这就是你需要处理这段代码的路径。
    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2018-11-17
    相关资源
    最近更新 更多