Я пытаюсь переместить мое приложение node.js из разработки в размещенную среду. Все это работает в dev, который просто запускается с помощью npm start на моей локальной машине. Теперь я перехожу к размещенному экземпляру iisnode и мне чего-то не хватает.
web.config
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="*.njs" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="hello">
<match url="hello/*" />
<action type="Rewrite" url="hello.njs" />
</rule>
<rule name="index_withSQL">
<match url="ffbeReport/*" />
<action type="Rewrite" url="index_withSQL.njs" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="node_modules" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
index_with SQL .n js
const express = require("express");
const port=process.env.PORT || 3000
const app=express();
const fileUpload = require('express-fileupload');
const path = require("path");
app.use(express.urlencoded({extended: false}));
app.use(express.json());
app.use(express.static(__dirname));
app.use(fileUpload());
app.post('/upload', function(req, res) {
//process the uploaded data
});
app.get('/minimalIndex.*',function(req,res){res.sendFile(path.join(__dirname + '/minimalIndex.njs'));});
app.get('/personal.css',function(req,res){res.sendFile(path.join(__dirname+'/personal.css'));});
app.get('/fileFlattener.html',function(req,res){res.sendFile(path.join(__dirname+'/fileFlattener.html'));});
app.get('/uploaded.html',function(req,res){res.sendFile(path.join(__dirname+'/uploaded.html'));});
app.get('/',function(req,res){res.sendFile(path.join(__dirname + '/minimalIndex.html'));});
app.get('/ffbeReport*',function(req,res){res.sendFile(path.join(__dirname + '/minimalIndex.html'));});
app.get('/googleOAuthSuccess',function(req,res){res.sendFile(path.join(__dirname + '/minimalIndex.html'));});
app.get('/static/units.json',function(req,res){res.sendFile(path.join(__dirname + '/static/flattenedStaticUnits.json'));});
const webserver = app.listen(port,function(){console.log('Express web server is running...on ${port}');});
minimalIndex. html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Upload Form</title>
<link rel="stylesheet" type="text/css" href="personal.css"/>
</head>
<body>
<center>
<H1>Upload your Units</H1><br>
<fieldset>
<div>Provide the units output file from the FFBE Sync tool</div>
<form ref='uploadForm'
id='uploadForm'
action='/upload'
method='POST'
target="uploaded.html"
encType="multipart/form-data">
<input type="file" name="sampleFile" />
<input type='submit' value='Upload!' />
</form>
</center>
</body>
</html>
Когда я go до http://velgarth.w27.wh-2.com/minimalIndex.html или / ffbeReport, я получаю минимальную страницу индекса просто отлично. Но когда я пытаюсь загрузить файл, я получаю сообщение об ошибке IIS 404
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Detailed Error Information:
Module IIS Web Core
Notification MapRequestHandler
Handler StaticFile
Error Code 0x80070002
Requested URL http://velgarth.w27.wh-2.com:80/upload
Physical Path E:\web\velgarth\upload
Logon Method Anonymous
Logon User Anonymous
. На мой взгляд, проблема заключается в том, что он пытается запустить файл, поскольку в нем говорится, что обработчик - это StaticFile. Но я действительно не знаю, какой шаг мне не хватает.