【问题标题】:Node.js works locally but returns "Bad request" remotelyNode.js 在本地工作,但远程返回“错误请求”
【发布时间】:2017-04-20 13:55:52
【问题描述】:

我创建了一个应用程序(Node.js + Express),在本地运行它。然后我在 Azure 上创建了 Node.js 应用程序并通过 FTP 上传文件。然后我卡住了 - 如何运行它?

我在 azure 中找到了一种远程控制台,并从那里安装了所有软件包。但是当我尝试运行应用程序:“npm start”时,我只返回了一行:“Bad request”。这是什么意思?怎么办?

./bin/www 文件的开头:

var app = require('../app');
var debug = require('debug')('goWeb:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

goWeb - 是我的应用,在 package.js 中提到。

UPD 我将端口更改为 80,现在出现错误“端口 80 需要提升权限”。我不知道下一步该做什么。 谢谢

【问题讨论】:

  • 你需要展示一些代码。例如。 npm start 命令有什么作用?
  • 我不知道它在 azure 上做了什么(我相信别的东西),但在本地它会转到 ./bin/www 并运行 www 文件。但是远程 - 即使我运行“node ./bin/www”,我也会得到相同的结果。即使我运行“node app.js”,它也会返回相同的结果。
  • 就像@miparnisari 所说:你没有显示任何代码,所以很难弄清楚发生了什么。只是好奇:您的应用正在监听哪个端口?
  • 代码是标准的 - 我没有创建它,它是自动生成的(因为我使用 express) - 我现在将使用 ./bin/www 文件的第一部分更新帖子.
  • 我认为@DavidMakogon 搞定了——你在错误的端口上监听!应该是80端口(或者8080,不记得了)

标签: node.js azure


【解决方案1】:

您的app.js 文件似乎不在由Web 服务器iisnode 提供内容的wwwroot 文件夹中,您不需要在Azure Web 应用程序中执行npm start。

你可以看看我的wwwroot 结构,它看起来像这样:

您还可以在web.config 中使用以下行自定义app.js 文件的路径。

<handlers>
    <!-- Indicates that the app.js file is a node.js site to be handled by the iisnode module -->
    <add name="iisnode" path="app.js" verb="*" modules="iisnode"/>
</handlers>

【讨论】:

  • 我的应用在 Node.js 下运行,没有任何 IIS 跟踪,所以我什至没有任何 web.config 文件。
  • Node.js 应用部署到Azure App Services 使用iisnode 模块运行,当server.js 或app.js 文件作为入口时会自动创建web.config 文件放入wwwroot目录。
  • 哦,我明白了,你是对的!我不知道 IIS。听起来很奇怪。
猜你喜欢
  • 2020-12-15
  • 2023-03-17
  • 1970-01-01
  • 2013-05-22
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多