node.js + express ve iisnode ile bazı deneyler yapıyorum. ben C:\tsapp-deploy\tsappsvr\TestExpress\0.0.0
bulunan aşağıdaki çok basit bir uygulama vardır:Node.js + Express tabanlı uygulama iisnode ile çalışmıyor
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);
});
package.json:
{
"name": "TestExpress",
"version": "0.0.0",
"private": true,
"dependencies": {
"express": "3.x"
}
}
web.config:
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>
</system.webServer>
</configuration>
public/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>
</head>
<body>
<h1 id="hello" style="text-align:center;"></h1>
</body>
</html>
Yapılandırmam: Windows 8.1, IIS 8; iisnode sürüm 0.2.11, düğüm sürümü v0.10.28.
Komut satırından başlatıldığında (C:\tsapp-deploy\tsappsvr\TestExpress\0.0.0>node app.js
), uygulama beklendiği gibi çalışır: tarayıcıda http://localhost:2709/
adresine gidip "Merhaba, Dünya!" Bölümüne bakın.
Benim IIS şu anda benzer konumlardan (yani, C:\tsapp-deploy\tsappsvr\appname\x.y.z\index.js
) ifade kullanmayan diğer node.js tabanlı uygulamaları çalıştırıyor, bu yüzden doğru yapılandırılmalı, ancak bu uygulamayı tarayıcıdan çalıştırmayı denediğimde farz ediyorum. http://localhost/tsappsvr/TestExpress/0.0.0/app.js
Bir 404 Bulunamadı (IE'de) veya bir "Chrome/Firefox'ta" /tsappsvr/TestExpress/0.0.0/app.js GET. "
Sorunun web.config adresinde olabileceğini tahmin ediyorum, ancak uygulamamın çalışmasını sağlamak için bunu nasıl değiştireceğimi anlayamıyorum. Benzer soruların diğer cevaplarında önerildiği gibi web.config'te birkaç değişiklik denedim, ancak henüz başarı yok. Herhangi bir öneriniz var mı?
Şimdiden teşekkürler.
Teşekkürler David, url-rewrite uzantısını yüklemedim. Şimdi buna sahibim ve yeniden yazma kuralını web.config ile ekledim, ancak henüz şansım olmadı. Sadece app.js'yi şu şekilde değiştirerek yanıt almayı başardım: 'var express = require ('express'); var http = gerekli ('http'); var app = express(); app.use (işlev (req, res, sonraki) { res.send ('Merhaba, Dünya!'); }); var server = http.createServer (app); var port = process.env.PORT || 2709 server.listen (bağlantı noktası); ', ama app.use ("/static ", express.static (__ dirname + '/ public')) gibi bir şey denediğimde;' app'im catch-all middleware'de kalıyor. – eca