在Azure Web服务上部署Node JS应用程序

时间:2017-01-15 00:08:37

标签: node.js azure

当我尝试导航到我的Azure网站时,我收到以下错误,其中包含403错误代码。

您无权查看此目录或页面。

我已经创建了下面列出的正确种子应用程序文件(我相信),并且很困惑为什么我仍然遇到此错误。我在应用程序日志中看不到任何可疑的内容。

日志:

Command: "D:\home\site\deployments\tools\deploy.cmd"
Handling node.js deployment.
KuduSync.NET from: 'D:\home\site\repository' to: 'D:\home\site\wwwroot'
Copying file: 'server.js'
The package.json file does not specify node.js engine version constraints.
The node.js application will run with the default node.js version 6.9.1.
Selected npm version 3.10.8
npm WARN test@1.0.0 No description
Finished successfully.

文件:

server.js:

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

var PORT = process.env.PORT || 1337;

app.get('/', function (req, res) {
  res.send('Hello World!!')
});

app.listen(PORT, function () {
  console.log('App listening on port ' + PORT);
});

的package.json:

{
  ...,
  "scripts": {
    "start": "node server",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  ...
}

的web.config:

<configuration>
  <system.webServer>
    <handlers>
      <!-- indicates that the app.js file is a node.js application to be handled by the iisnode module -->
      <add name="iisnode" path="server.js" verb="*" modules="iisnode" />
    </handlers>
  </system.webServer>
</configuration>

1 个答案:

答案 0 :(得分:2)

您的web.config告诉IIS使用iisnode模块用于server.js路径,但包括网站root在内的所有其他路径都不会受此影响。

如果您希望您的节点应用程序在您的azure网站根目录上可用,则需要明确告知IIS:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="iisnode" path="server.js" verb="*" modules="iisnode" />
        </handlers>
        <rewrite>
            <rules>
                <rule name="DynamicContent">
                    <match url="/*" />
                    <action type="Rewrite" url="server.js"/>
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>