Nuxt.js 使用 IISNODE 在 IIS 中返回 404 的路由
Nuxt.js routes returning 404 in IIS with IISNODE
只是想用 iisnode 在 iis 中托管 nuxt.js 和 express.js 演示。
我得到 nuxt 页面路由的 404,但是 express api 路由工作正常。
nuxt 所做的一切都是 express 来处理它的路由。不确定为什么这不起作用。
我已经用 iisnode 处理程序设置了我的 web.config,我还包含了 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>
IIS 节点使用命名管道,因此服务器在 locahost tcp 端口 80 上呈现 api 调用失败...
服务器端需要一个完整的 url 才能工作。
只是想用 iisnode 在 iis 中托管 nuxt.js 和 express.js 演示。 我得到 nuxt 页面路由的 404,但是 express api 路由工作正常。
nuxt 所做的一切都是 express 来处理它的路由。不确定为什么这不起作用。
我已经用 iisnode 处理程序设置了我的 web.config,我还包含了 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>
IIS 节点使用命名管道,因此服务器在 locahost tcp 端口 80 上呈现 api 调用失败... 服务器端需要一个完整的 url 才能工作。