我正在尝试从模板创建Web应用。问题是,当我运行该应用程序时,我收到“由于发生内部服务器错误而无法显示该页面”。我做了一些研究,发现我的节点安装有问题。
我尝试重新安装npm,当前版本为1.4.28。错误日志显示:
0信息,如果以“ OK”结束则有效 1个详细的cli ['node', 1个详细的cli'D:\ Program Files(x86)\ npm \ 1.4.28 \ node_modules \ npm \ bin \ npm-cli.js', 1详细cli'init'] 2信息使用npm@1.4.28 3信息使用node@v0.10.40 4错误错误:EINVAL,无效参数 在新套接字上出现4个错误(net.js:157:18) process.stdin发生4错误(node.js:693:19) 读取时出现4个错误(D:\ Program Files(x86)\ npm \ 1.4.28 \ node_modules \ npm \ node_modules \ read \ lib \ read.js:18:36) PromZard.prompt出现4错误(D:\ Program Files(x86)\ npm \ 1.4.28 \ node_modules \ npm \ node_modules \ init-package-json \ node_modules \ promzard \ promzard.js:214:3) PromZard.L出现4错误(D:\ Program Files(x86)\ npm \ 1.4.28 \ node_modules \ npm \ node_modules \ init-package-json \ node_modules \ promzard \ promzard.js:177:21) PromZard.walk出现4错误(D:\ Program Files(x86)\ npm \ 1.4.28 \ node_modules \ npm \ node_modules \ init-package-json \ node_modules \ promzard \ promzard.js:146:5) PromZard.loaded出现4错误(D:\ Program Files(x86)\ npm \ 1.4.28 \ node_modules \ npm \ node_modules \ init-package-json \ node_modules \ promzard \ promzard.js:90:8) PromZard出现4个错误。 (D:\ Program Files(x86)\ npm \ 1.4.28 \ node_modules \ npm \ node_modules \ init-package-json \ node_modules \ promzard \ promzard.js:57:10) fs.js:272:14出现4个错误 Object.oncomplete出现4个错误(fs.js:108:15) 5错误如果您需要帮助,可以报告此 entire 日志, 5错误,包括npm和节点版本,位于: 5错误http://github.com/npm/npm/issues 6错误系统Windows_NT 6.2.9200 7错误命令“节点”“ D:\ Program Files(x86)\ npm \ 1.4.28 \ node_modules \ npm \ bin \ npm-cli.js”“ init” 8错误CWD D:\ home \ site \ wwwroot 9个错误节点-v v0.10.40 10错误npm -v 1.4.28 11错误的系统调用uv_pipe_open 12错误代码EINVAL 13错误errno 18 14详细出口[18,true]
这就是我所拥有的:
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="app.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<!-- Don't interfere with requests for logs -->
<rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^[a-zA-Z0-9_\-]+\.js\.logs\/\d+\.txt$" />
</rule>
<!-- Don't interfere with requests for node-inspector debugging -->
<rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^app.js\/debug[\/]?" />
</rule>
<!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
<rule name="StaticContent">
<action type="Rewrite" url="public{REQUEST_URI}" />
</rule>
<!-- All other URLs are mapped to the Node.js application entry point -->
<rule name="DynamicContent">
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True" />
</conditions>
<action type="Rewrite" url="app.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
App.js
var express = require('express');
var app = express();
app.use('/node_modules', express.static(__dirname + '/node_modules'));
app.use('/style', express.static(__dirname + '/style'));
app.use('/script', express.static(__dirname + '/script'));
app.get('/',function(req,res){
res.sendFile('home.html',{'root': __dirname + '/templates'});
})
app.get('/showSignInPage',function(req,res){
res.sendFile('signin.html',{'root': __dirname + '/templates'});
})
app.get('/showSignUpPage',function(req,res){
res.sendFile('signup.html',{'root':__dirname + '/templates'})
})
app.listen(3000,function(){
console.log('Node server running @ http://localhost:3000')
});
Server.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end('Hello, world!');
}).listen(process.env.PORT || 8080);
我最初是从server.js获取结果的,但是我做了一些更改以尝试解决该问题以及如何使我什么也没得到。有人能指出我这个问题吗?
谢谢
编辑:添加zip可以做到这一点,创建另一个级别的文件夹,并且我收到消息“您无权查看此目录或页面”。当我尝试运行该应用程序时。
答案 0 :(得分:2)
您需要更改
app.listen(3000,function(){
console.log('Node server running @ http://localhost:3000')
});
到app.listen(process.env.PORT);
可以通过互联网访问azure webapp的唯一方法是通过已经公开的HTTP(80)和HTTPS(443)TCP端口。
我已经用您的web.config和app.js测试了该项目。我将遇到与您相同的错误。
更改监听端口后,效果很好。您可以参考此article来将您的nodejs应用程序部署到Azure。