iisnode未启动节点进程
问题描述:
我有一个非常简单的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重写模块,所以不应该是这个问题,而且我再次假设这是因为节点还没有启动。
我必须做一些完全愚蠢的事情,但我无法弄清楚。
答
有几件事情是我有错:
- 我试图用
npm link <module_name>
,但这显然不使用IIS的,所以我也npm install
所有我需要 模块
- 我
match url
应/*
,不mcServer/*
- 在我server.js文件,我需要预先app.get与
app.get('/mcServer/'