2017-07-27 76 views
0

我有一个非常简单的nodejs https服务器,我试图与iisnode一起工作,但它似乎并没有显示节点进程正在启动,所以当我尝试访问时出现500错误导航到它。iisnode未启动节点进程

const express = require('express'); 
const app = express(); 
const bodyParser = require('body-parser'); 
const fs = require('fs'); 
const cors = require('cors'); 
var https = require('https'); 

app.use(bodyParser.json()); 
app.use(cors()); 

app.get('/', function (req, res) { 
    res.send('Hello World!') 
}); 

var secureServer = https.createServer({ 
    key: fs.readFileSync('private.key'), 
    cert: fs.readFileSync('certificate.pem') 
}, app).listen(process.env.PORT || 3443, function() { 
    console.log('Secure Server listening on port 3443'); 
}); 

启动该应用程序的罚款,如果我做的节点server.js,但是当我试图依赖于由setupsamples.bat脚本设置节点的虚拟目录,它似乎并没有工作。我的web.config看起来也像这样:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="iisnode" path="server.js" verb="*" modules="iisnode" /> 
    </handlers> 
    <modules> 
     <remove name="MyAuthModule" /> 
    </modules> 
    <security> 
     <authorization> 
     <add accessType="Allow" users="?" /> 
     </authorization> 
    </security> 
    <rewrite> 
     <rules> 
     <rule name="mcServer"> 
      <match url="mcServer/*" /> 
      <action type="Rewrite" url="server.js" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 

MyAuthModule是设置为我在我的环境自定义的验证模块,因此,如果我没有这样的删除语句,我得到有关模块的错误不存在。

我放在server.js,在Web.config上面显示和证书文件到iisnode/www目录自身的mcServer目录是通过运行setupsample.bat脚本创建。当我导航到https://myUrl/node/mcServer时,出现500错误,但如果我导航到https://myUrl/node,它会显示可用的不同应用程序,就像我说的,节点进程没有运行,所以我认为这是500错误的一部分我明白了。

这也很好的说明,我安装了url重写模块,所以不应该是这个问题,而且我再次假设这是因为节点还没有启动。

我必须做一些完全愚蠢的事情,但我无法弄清楚。

回答

0

有几件事情是我有错:

  • 我试图用npm link <module_name>,但这显然不使用IIS的,所以我也npm install所有我需要
  • 模块
  • match url/*,不mcServer/*
  • 在我server.js文件,我需要预先app.get与app.get('/mcServer/'