使用iisnode模块在IIS中托管node.js应用程序来取代自托管node.exe进程:
起因:
服务器的ip只有80端口对外开放。但是我们node app.js后,外网访问不到,为了能够解决此问题,将nodejs部署到iis服务器上,这样既可以解决自动退出问题,也可共享80端口。
依赖项
Node.js
创建web.config文件(express)
1 | <configuration> |
Node服务的修改
1 | index.js中端口监听由 server.listen(3000) 改成 server.listen(process.env.PORT) |
完整app.js1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29const userApi = require('./api/userApi');
const fs = require('fs');
const path = require('path');
const bodyParser = require('body-parser');
const express = require('express');
const app = express();
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Credentials", "true");
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With,loginedtoken');
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
if (req.method == 'OPTIONS') {
res.send(200);
}
else {
next();
}
});
var history = require('connect-history-api-fallback');
const staticFileMiddleware = express.static('assets');
app.use(staticFileMiddleware);
app.use(history({
disableDotRule: true,
verbose: true
}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }))
app.use('/node_yrd/api', userApi);
app.listen(process.env.PORT);
Vue请求地址的修改
1 | var isPro = process.env.NODE_ENV === 'production' //process.env.NODE_ENV用于区分是生产环境还是开发环境 |
创建添加应用程序
如图