我在这里搜索了有关此错误的其他问题,但我找不到解决方案.
昨天我在Azure上部署了一个Node + Express + Socket.IO网站,它不起作用.我收到了错误
Application has thrown an uncaught exception and is terminated: Error: listen EACCES 0.0.0.0:80
Run Code Online (Sandbox Code Playgroud)
在这段代码中:
// more code ...
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
// right here
server.listen(portNumber, function () {
console.log('Server listening at port %d', portNumber);
});
// more code ...
Run Code Online (Sandbox Code Playgroud)
看起来好像另一个进程已经在监听这个端口..也许IIS服务器?我不确定.
我在我的web.config文件中使用了一个重写规则,用于在issnode下运行的节点应用程序指向我的server.js文件.myapp/*指向server.js.
<rule name="myapp" enabled="true">
<match url="myapp/*" />
<action type="Rewrite" url="server.js" />
</rule>
Run Code Online (Sandbox Code Playgroud)
这一直很好www.mywebsite.com/myapp/会加载运行我的应用程序.我想要的是从网站的根目录进行重定向,以便www.mywebsite.com/运行我的应用程序.所以我改变了我的web.config文件
<rule name="myapp" enabled="true">
<match url="/*" />
<action type="Rewrite" url="server.js" />
</rule>
Run Code Online (Sandbox Code Playgroud)
所以这是运行server.js并提供我的静态html文件,唯一的问题是从我的html文件(css,js,图像等)引用任何外部文件.每个请求只需500秒.我用它来提供静态文件
var libpath = require('path');
var _path = "."; <-- This seems to be the problem
var uri = url.parse(req.url).pathname;
var filename = libpath.join(_path, uri);
fs.readFile(filename, "binary", function (err, file) {
if (err) {
res.writeHead(500, {
"Content-Type": "text/plain"
});
res.write(err + "\n");
res.end();
return;
}
var type = mime.lookup(filename);
res.writeHead(200, {
"Content-Type": type
});
res.write(file, "binary"); …Run Code Online (Sandbox Code Playgroud) 我正在使用 iisnode 运行我的 node.js 应用程序。然而,大约一个小时后,node.exe 进程停止运行(我需要它运行,因为我有一个 setInterval() 方法,每隔几秒钟从数据库中提取数据)。有什么建议吗?
另外,如果我使用 process.env.PORT 设置我的服务器,我如何在客户端使用 socket.io 连接到它?我明白我必须使用
io.configure(function () {
io.set("transports", ["xhr-polling"]); // no websockets
io.set("polling duration", 10);
io.set("log level", 1); // no debug msg
});
Run Code Online (Sandbox Code Playgroud) 我无法让日志记录为我部署到 Windows Azure 的节点应用程序工作。我正在使用 iisnode.yml 文件选项覆盖 web.config。
这是 yml 文件内容:
node_env: development
nodeProcessCountPerApplication: 1
maxConcurrentRequestsPerProcess: 1024
maxNamedPipeConnectionRetry: 24
namedPipeConnectionRetryDelay: 250
maxNamedPipeConnectionPoolSize: 512
maxNamedPipePooledConnectionAge: 30000
asyncCompletionThreadCount: 0
initialRequestBufferSize: 4096
maxRequestBufferSize: 65536
watchedFiles: *.js;iisnode.yml
uncFileChangesPollingInterval: 5000
gracefulShutdownTimeout: 60000
loggingEnabled: true
logDirectory: iisnode
debuggingEnabled: true
debuggerPortRange: 5058-6058
debuggerPathSegment: debug
maxLogFileSizeInKB: 128
maxTotalLogFileSizeInKB: 1024
maxLogFiles: 20
devErrorsEnabled: true
flushResponse: false
enableXFF: false
Run Code Online (Sandbox Code Playgroud)
下面是被覆盖的 web.config 文件的内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="false" />
<iisnode configOverrides="iisnode.yml" debuggingEnabled="true" loggingEnabled="true" logDirectory="iisnode" devErrorsEnabled="true" nodeProcessCommandLine=""%programfiles(x86)%\nodejs\node.exe"" />
<handlers>
<add name="iisnode" …Run Code Online (Sandbox Code Playgroud) 我无法让iisnode运行我的节点应用程序。我的目录结构是
iis-site
-client
-server
-server.js
Run Code Online (Sandbox Code Playgroud)
如何使iisnode指向嵌套的.js文件?我试过了,但是它服务器server.js而不是执行它。
<handlers>
<add name="iisnode" path="server\server.js" verb="*" modules="iisnode" />
</handlers>
Run Code Online (Sandbox Code Playgroud)
和
<rule name="default">
<match url="/*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="server/server.js" />
</rule>
Run Code Online (Sandbox Code Playgroud) 我通过使用iisnode使用IIS节点,我遇到了设置CookieSession选项的麻烦secure:true.
我在IIS上使用HTTPS,我将任何HTTP重定向到HTTPS.但即便如此,如果我设置了CookieSession选项secure:true,则会话在登录后将不会有任何内容.
secure:一个布尔值,指示cookie是否仅通过HTTPS发送(HTTP默认为false,HTTPS默认为true).
我被迫使用secure:false它来使它工作.为什么?
我们在Windows 2008R2服务器上使用带有IIS 7.5的iisnode.node.js应用程序在启动时加载一些配置数据.配置数据有时会发生变化,需要重新启动应用程序.
通过Windows系统管理器控制台重新启动IIS站点实例时,一切正常.
当重新启动IIS appcmd stop并appcmd start命令时,node.js-app不会再次启动.看起来iisnode无法识别IIS的重启.
如何通过命令(即通过命令行)重新启动iisnode环境中的node.js应用程序?
我最近开始研究 nodejs。我创建了一个简单的 nodejs api(带有 express),它连接到 SQL 服务器数据库并返回结果。在我的开发之后,我遇到了如何托管这个节点 js api 的挑战。我决定在 IIS 上托管我的 api。我遇到了不同的错误,最后我能够让它工作。感谢互联网上的不同文章。以下是我遵循的步骤。可能这可以帮助任何新尝试在 Windows IIS 中托管 nodejs 的人。
我正在使用在IISNode下的节点上运行的Expressjs创建一个应用程序(即在Windows上).
我开始的设置非常像我见过的所有expressjs示例:
backend.configure(function() {
backend.register('html', {
compile: function(str, options) {
return function(locals) {
return str;
};
}
});
backend.set('views', __dirname + '/views');
backend.set('view engine', 'html');
backend.set('view options', {
layout: false
});
backend.use(express.bodyParser());
backend.use(backend.router);
backend.use(express.static(__dirname + '/public'));
});
Run Code Online (Sandbox Code Playgroud)
让我说我的网站运行在localhost:// mysite.我必须按如下方式创建所有路由处理程序.
backend.get('/mysite/index', function(req, res, next) {
return res.render('index');
});
Run Code Online (Sandbox Code Playgroud)
即我必须用"mysite"为它们加上前缀.我见过的非例子都需要这个.这与IISNode或其他我没有配置的东西有关吗?
我将进入构建在Windows Azure上通过iisnode运行的Node.js应用程序的beta部署阶段.设置了多个实例,以及生产/分期分离,我的研究得出了以下结论:
如果我想在不重新部署代码的情况下动态更改配置设置,我需要使用服务配置
.cscfg文件.
我的问题是,我已经存储在各种配置设置<appSettings>和<iisnode>元素web.config我可能要改变这种状况,这是目前在通过过程全局对象我节点应用暴露.
我查看了MSDN,节点文档和SO(通常的),并且无法找到Node是否可以或以相同的方式公开服务配置设置.如果没有,有没有办法可以将它们暴露给我的应用程序?
编辑:更具体地说,我真的只是想将node_env设置从web.config服务配置移动,因为我希望能够通过配置更改从登台切换到生产设置.原因 - 我们使用IP切换在登台和prod之间交换,并且两者之间存在一些非常小的差异(例如,它消耗的RESTful Web服务的URL).
我也知道我可以node_env在iisnode.yamliisnode读取的文件中配置,但仍然会回收应用程序,我不想修改x yaml文件并重新部署,其中x是生产/登台应用程序的实例数.
我正在一个Webforms项目上,正在研究实现node.js和issnode。我们正在使用:
我们有一个页面需要一段时间才能加载,并且正在寻找提高速度的方法。页面上显示了一些计数,这些计数很有用,但会导致页面加载缓慢。(我们将显示任务总数,组中的人数和组数)。
我以为我可以直接从node.js文件中调用我的C#代码。从我看过的示例以及我读过的内容来看,似乎并不是我应该寻找的解决方案。由于我们使用的是EF并且我没有编写SQL查询,因此看起来我应该与服务进行交互。
所以我的问题是,我可以使用Node.js调用C#方法吗?
我有一个 node.js express 应用程序,我需要让它在我的本地 IIS 服务器上运行,以便我可以向它发送有效的 http 请求并处理响应。
我正在使用 win 10 和 IIS 10。
我遵循了有关使用 iisnode 的不同指南,以便在 IIS 上使用 node.js 应用程序。
https://github.com/tjanczuk/iisnode
我还设法运行了测试,因此 iisnode 已安装、有效并与我的 IIS 一起工作。
“内置”测试是在 IIS 附带的默认网站下执行的,它会在其下创建一个新应用程序,从中可以访问不同的示例。
我的问题是我仍然缺乏一些关于如何在 IIS 上设置我自己的 node.js 应用程序的信息,因为这些信息似乎缺乏。稍后介绍如何克服无效 http 请求的问题。
HTTP status: 500
HTTP subStatus: 1001
HTTP reason: Internal Server Error
Run Code Online (Sandbox Code Playgroud) 有人可以发布一个node.js应用程序的工作代码示例,该应用程序使用在iisnode和azure上运行的socket.io.似乎IIS不能很好地使用socket.io和我发现的任何代码示例都不能在iisonde/azure上运行...
当我尝试将vie socketio连接到http:// mysite:8080时, azure会返回HTTP 500错误...
谢谢