简体   繁体   English

在Azure网站中运行nodeJS站点

[英]Running a nodeJS sites in Azure Websites

I'm trying to run a nodeJS site in Windows Azure websites. 我正在尝试在Windows Azure网站中运行nodeJS站点。 I just git pushed two files: 我只是git推了两个文件:

server.js package.json server.js package.json

And all of my modules from npm install . 我所有的模块来自npm install It works fine locally but when I browse the WA Website I just get: 它在本地工作正常,但当我浏览WA网站时,我得到:

The page cannot be displayed because an internal server error has occurred.

I used the CLI to get the tail logs but I just see this: 我用CLI来获取尾部日志,但我只是看到了这个:

<h3>HTTP Error 500.0 - Internal Server Error</h3> 
<h4>The page cannot be displayed because an internal server error has occurred.</h4> 
</div> 
<div class="content-container"> 
<fieldset><h4>Most likely causes:</h4> 
<ul>    <li>IIS received the request; however, an internal error occurred during the processing of the request. The root cause of this error depends on which module handles the request and what was happening in the worker process when this error occurred.</li>    <li>IIS was not able to access the web.config file for the Web site or application. This can occur if the NTFS permissions are set incorrectly.</li>    <li>IIS was not able to process configuration for the Web site or application.</li>     <li>The authenticated user does not have permission to use this DLL.</li>   <li>The request is mapped to a managed handler but the .NET Extensibility Feature is not installed.</li> </ul> 
</fieldset> 
</div> 
<div class="content-container"> 
<fieldset><h4>Things you can try:</h4> 
<ul>    <li>Ensure that the NTFS permissions for the web.config file are correct and allow access to the Web server's machine account.</li>     <li>Check the event logs to see if any additional information was logged.</li>  <li>Verify the permissions for the DLL.</li>    <li>Install the .NET Extensibility feature if the request is mapped to a managed handler.</li>  <li>Create a tracing rule to track failed requests for this HTTP status code. For more information about creating a tracing rule for failed requests, click <a href="http://go.microsoft.com/fwlink/?LinkID=66439">here</a>. </li> </ul> 

Without seeing your actual server.js code (which you should insert into your question), I can only guess at what could be the issue. 没有看到你的实际server.js代码(你应该在你的问题中插入),我只能猜测可能是什么问题。 So... my guess is that your server.js isn't listening on the right port (of course, I could be wrong...). 所以...我的猜测是你的server.js没有在正确的端口上听(当然,我可能是错的......)。

In the the node.js tutorial on the WindowsAzure.com site in the node.js developer section, there's a "Hello World" example that shows how you need to grab the port from the environment: 在node.js开发人员部分的WindowsAzure.com站点上的node.js教程中,有一个“Hello World”示例,显示了如何从环境中获取端口:

var http = require('http')
var port = process.env.PORT || 1337;
http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World\n');
}).listen(port);

You can't just have your server listen on port 80. You need to grab the right port from process.env.PORT . 您不能让您的服务器在端口80上侦听。您需要从process.env.PORT获取正确的端口。

Hopefully this was your issue... 希望这是你的问题......

As a side note, make sure you are transpiling any ES6. 作为旁注,请确保您正在转换任何ES6。 I opened up the Visual Studio editor in the browser and it immediately complained about this. 我在浏览器中打开了Visual Studio编辑器,它立即抱怨这个。 Adjusting accordingly resolved a 500 for me. 因此调整为我解决了500。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM