2017-07-27 120 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/'