Запуск nodejs в iisnode, получающий http://localhost/node/polyfills.c466c90744ce632ac8b9.js net :: ERR_ABORTED 500 (Ошибка модуля перезаписи URL.) - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь запустить приложение node.js в iisnode. Я добавил SSL сертификат в IIS. Теперь я запускаю приложение в http, а не в https. Когда я запускаю приложение, я вижу эту ошибку

net :: ERR_ABORTED 500 (Ошибка модуля перезаписи URL.)

Для всех статических ресурсов. Я включил просмотр каталогов для общего iisnode / www. Я гарантировал, что каталог iisnode / www имеет полный контроль над чтением / записью для группы IIS_IUSRS.

Я не знаком с написанием правил или структурированием web.config. Пожалуйста, помогите мне структурировать web.config. Я показал структуру каталогов iisnode / www здесь: iisnode/www iisnode/www/client

<configuration>
    <system.web>
        <customErrors mode="Off" />
        <httpCookies httpOnlyCookies="true" />
    </system.web>
   <system.webServer>
     <handlers>
       <add name="iisnode" path="app.js" verb="*" modules="iisnode" />
     </handlers> 
     <rewrite> 
       <rules>
        <rule name="infrc">
          <match url="/*" />
          <action type="Rewrite" url="app.js" />
        </rule>
       </rules>
     </rewrite>
        <defaultDocument>
            <files>
                <clear />
                <add value="web.config" />
                <add value="app.js" />
                <add value="index.html" />
            </files>
        </defaultDocument>
        <directoryBrowse enabled="true" />
   </system.webServer>
 </configuration>




**app.js**
'use strict';
var express = require('express');
var http = require('http');
var fs = require('fs');
var path = require('path');
var morgan = require('morgan');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
const moment = require('moment');
require('dotenv').config();
var routes = require('./server/routes/index.route');
var config = require('./server/config/config');
var app = express();
morgan.token('user', (req, res) => {
  if (req.user) {
    return req.user.id;
  } else {
    return "Guest";
  }
});
morgan.token('timestamp', (req, res) => {
  return moment().format();
});
app.use(morgan(':timestamp :response-time :method :status :user :remote-addr :url'));
app.use(bodyParser.json());
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended : false }));
app.use(express.static(path.join(__dirname, '/client')));
app.get('/',function(req,res){  
  res.sendFile(path.join(__dirname, 'client/index.html'));
}); 


let port = 444;



function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'?'Pipe ' + port:'Port ' + port;

  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'?'pipe ' + addr: 'port ' + addr.port;
  console.log('Listening on ' + bind);
}


var server = http.createServer(app);
console.log(server);
app.set('port', port);
app.set('view engine', 'ejs');


server.on('error', onError);
server.on('listening', onListening);



const initializeDatabases = require('./server/dbs').initializeDatabases;
const crons = require('./server/routes/crons.js').crons;

initializeDatabases().then(dbs => {

    routes(app, dbs);
    server.listen(port);


}).catch(err => {
  console.error('Failed to make all database connections!');
  console.error(err);
  process.exit(1);
});



module.exports = app;
...