Nuxt.js маршруты, возвращающие 404 в IIS с IISNODE

Просто пытаюсь разместить демо nuxt.js и express.js в iis с iisnode. Я получаю 404 для маршрутов на пустой странице, но маршруты экспресс-API работают нормально.

Все, что делает nuxt - это все экспресс для обработки своих маршрутов. Не уверен, почему это не работает.

Я настроил свой web.config с помощью обработчика iisnode, и я также включил конфигурацию перезаписи URL, чтобы все перенаправить на server.prod.js

'use strict';

var Nuxt = require('nuxt');
var app = require('express')();
var host = process.env.HOST || '127.0.0.1';
var port = process.env.PORT || 3000;

app.set('port', port);
// Import API Routes
app.use('/api', require('./api/index'));

// Import and Set Nuxt.js options
var config = require('./nuxt.config.js');
config.dev = !(process.env.NODE_ENV === 'production');

// Init Nuxt.js
var nuxt = new Nuxt(config);
app.use(nuxt.render);

// Build only in dev mode
if (config.dev) {
  nuxt.build().catch(function (error) {
    console.error(error); // eslint-disable-line no-console
    process.exit(1);
  });
}

// Listen the server
app.listen(port, host);
console.log('Server listening on ' + host + ':' + port); // eslint-disable-line no-console
<configuration>
<system.webServer>
   <handlers><add name="iisnode" path="server.prod.js" verb="*" modules="iisnode" /></handlers>  
    <rewrite>
      <rules>
        <rule name="myapp">
          <match url="/*" />
          <action type="Rewrite" url="server.prod.js" />
        </rule>
        <!-- Don't interfere with requests for node-inspector debugging -->
        <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="^app.js\/debug[\/]?" />
        </rule>

      </rules>

    </rewrite>
        <directoryBrowse enabled="true" />

        <iisnode devErrorsEnabled="true" debuggingEnabled="true" loggingEnabled="true" nodeProcessCommandLine="C:\Program Files\nodejs\node.exe" />

     <!-- exclude node_modules directory and subdirectories from serving
     by IIS since these are implementation details of node.js applications -->

     <security>
       <requestFiltering>
         <hiddenSegments>
           <add segment="node_modules" />
         </hiddenSegments>
       </requestFiltering>
     </security>    

 </system.webServer>
</configuration>

1 ответ

Решение

Узел IIS использует именованные каналы, поэтому сервер рендеринга API-вызовов на TCP-порт locahost 80 не удалось... Серверной стороне нужен полный URL для работы.

Другие вопросы по тегам