我正在使用node.js + express和iisnode进行一些实验.我有以下非常简单的应用程序,位于C:\tsapp-deploy\tsappsvr\TestExpress\0.0.0:
app.js:
var express = require('express');
var app = express();
app.use(express.static(__dirname + "/public"));
var port = process.env.PORT || 2709;
app.listen(port, function() {
console.log('Listening on port ' + port);
});
Run Code Online (Sandbox Code Playgroud)
的package.json:
{
"name": "TestExpress",
"version": "0.0.0",
"private": true,
"dependencies": {
"express": "3.x"
}
}
Run Code Online (Sandbox Code Playgroud)
web.config中:
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
公共/ index.html的:
<!doctype html>
<html>
<head>
<script language="javascript" type="text/javascript" src="js/jquery.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
console.log("READY!");
$("#hello").html("Hello, World!");
});
</script> …Run Code Online (Sandbox Code Playgroud) 我在我的机器上运行了一个快速应用程序.我甚至可以使用节点服务器而不是issnode 在生产中运行它.
当试图让它在iisnode中运行时,我在尝试运行我的快速应用程序时遇到以下错误:
HRESULT:0x6d
HTTP状态:500
HTTP subStatus:1013
HTTP原因:内部服务器错误您收到此HTTP 200响应,因为system.webServer/iisnode/@devErrorsEnabled配置设置为"true".
除了node.exe进程的stdout和stderr的日志之外,请考虑使用调试和ETW跟踪来进一步诊断问题.
node.exe进程尚未向stderr写入任何信息,或者iisnode无法捕获此信息.经常的原因是iisnode模块无法创建日志文件来捕获node.exe的stdout和stderr输出.请检查运行node.js应用程序的IIS应用程序池的标识是否具有对node.js应用程序所在服务器上的目录的读写访问权限.或者,您可以通过将web.config的system.webServer/iisnode/@loggingEnabled元素设置为"false"来禁用日志记录.
我正在通过以下URL访问它,基于iisnode示例:
我在我的快递应用程序(C:\ Program Files\iisnode\www\express\bin)中的iisnode上给出了读写延迟,以防万一,在整个快递应用程序文件夹(C:\ Program Files\iisnode\www) \表达).没有改变.
我在iisnode问题上看到了一个关于它的公开话题,但没有提供解决方案.
我也尝试通过loggingEnabled :"false"在web.config快递应用程序的文件中使用来禁用登录,但它似乎没有效果,并且消息不断出现.
我给整个文件夹提供了读/写权限:
同样适用于IIS_IUSRS帐户以防万一:
我开始用iisnode和expressjs做一些实验,用节点创建一个类似API的REST.
所以在server.js上我创建了类似的东西
app.put("/test", function(req, res){
...
});
Run Code Online (Sandbox Code Playgroud)
但是,当我执行PUT请求时,我405 Method not allowed从IIS 7.5安装中获得了一个.
关于如何解决这个问题的任何想法?
顺便说一句,我已经google了,并尝试在不同的处理程序映射中添加PUT动词,但没有成功......
我无法安装msnodesql.
本来我试过
npm install node-sqlserver
Run Code Online (Sandbox Code Playgroud)
...并且这警告它已被msnodesql取代.
我成功安装了Node.js,iisnode,我看到样本Hello.js正在服务(yayee,很棒),所以至少node和iisnode正在工作.
我安装了先决条件:
Node.js - use the latest version if possible, but it has been tested on node 0.6.10 and later
node-gyp - latest version installed globally (npm install -g node-gyp)
python 2.7.x - for node-gyp (make sure it is in the path)
Visual C++ 2010 - the Express edition is freely available from Microsoft
SQL Server Native Client 11.0 - available as Microsoft SQL Server 2012 Native Client found in the SQL Server 2012 …Run Code Online (Sandbox Code Playgroud) 我试图在IIS上部署Node.js应用程序.我在GitHub存储库中看到了示例(https://github.com/tjanczuk/iisnode/tree/master/src/samples).
我被困在提供静态文件.像普通的Node应用程序一样,我将静态文件存储在名为public的文件夹中.根据几个博客/论坛的建议,我将以下规则添加到web.config:
<rule name="StaticContent">
<action type="Rewrite" url="public{REQUEST_URI}"/>
</rule>
Run Code Online (Sandbox Code Playgroud)
但它不起作用.如果有人有示例应用程序演示此问题,那将会有很大帮助.
我正试图在iis 上使用带有iisnode的 node.js来运行反应
我已经安装了最新的节点和最新的iisnode,并使用此stackoverflow作为指南,但无法获得过去的错误500. 如何为Web应用程序运行Node.JS服务器?
关于如何在iis上执行此操作的任何指南?
我有一个Web应用程序,它与通过IIS节点托管的NodeJS服务器建立套接字连接.当我解决了我最初拥有的客户端上的404轮询错误时,似乎连接正常.但是现在看起来客户端没有从IIS节点接收套接字事件.
我的理论是,因为IIS节点就像一个代理,发送回客户端的事件正在IIS节点级别停止.
exports.register = function(socket) {
User.schema.post('save', function (doc) {
console.log("Save socket");
onSave(socket, doc);
});
}
function onSave(socket, doc, cb) {
socket.emit('User List Update', doc);
}
Run Code Online (Sandbox Code Playgroud)
在Node中,上述事件触发,但在前端未收到.
客户端看起来像这样:
var socket = io.connect("http://myinternallyhostedserver:7777/reception");
socket.on('User List Update', function () {
console.log('Received socket event!');
if (vm.enableAlert) {
vm.alertSound.play();
}
vm.getUsers();
});
Run Code Online (Sandbox Code Playgroud)
我的web.config文件如下所示:
<configuration>
<appSettings>
<add key="virtualDirPath" value="/reception" />
</appSettings>
<system.webServer>
<handlers>
<add name="iisnode" path="server/app.js" verb="*" modules="iisnode" />
</handlers>
<iisnode enableXFF="true" />
<webSocket enabled="false"/>
<rewrite>
<rules>
<rule name="reception">
<match url="/*" />
<action type="Rewrite" url="server/app.js" …Run Code Online (Sandbox Code Playgroud) 有谁知道一种无需客户端请求就可以让 JavaScript 文件或文件集始终在 IISNode 下运行的方法?这个想法是让脚本作为服务运行,但让它们在 IISNode 下运行。
谢谢!csh3
服务器,位于德国
Windows Server 2008 / IIS 7
node.js 0.8.22
iisnode 0.2.2 x64
网页配置
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="server.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="DynamicContent">
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
</conditions>
<action type="Rewrite" url="server.js"/>
</rule>
</rules>
</rewrite>
<iisnode watchedFiles="*.js;lib\*;node_modules\*;styles\*;ui\*;views\*" />
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
服务器.js
var port = process.env.NODE_ENV == 'production' ? process.env.PORT : 3000;
require('./lib/server').listen(port);
Run Code Online (Sandbox Code Playgroud)
问题:
有时我会收到 200 响应,但有时会收到 404(找不到文件或目录)。
如果我确实从俄罗斯、德国或美国请求,响应是 200。
如果我从中国请求,有时响应是 404(取决于 ISP、时间和其他方面)。
404 响应看起来像 iis 找不到 server.js
200 响应示例(使用 express Vpn,连接到美国):
<configuration>
<system.webServer>
<handlers>
<add …Run Code Online (Sandbox Code Playgroud)