lite-server似乎忽略了我覆盖默认索引的尝试。
我有bs-config.json:
{
"server": {
"baseDir": "src",
"index": "/index.3.html",
"routes": {
"/node_modules": "node_modules"
}
}
}
我正在使用lite-server版本2.3.0,如下所示:
> lite-server -c=bs-config.json
browser-sync config **
{ injectChanges: false,
files: [ './**/*.{html,htm,css,js}' ],
watchOptions: { ignored: 'node_modules' },
server:
{ baseDir: 'src',
middleware: [ [Function], [Function] ],
directory: true,
index: '/index.3.html',
routes: { '/node_modules': 'node_modules'
}
}
}
在上面的控制台日志输出中,它识别bs-config.json索引缺省值为“index.3.html”,但是,当浏览器请求“GET http://localhost”时,控制台显示它正在尝试提供index.html而不是index.3.html。
[Browsersync] Serving files from: src
[Browsersync] Watching files...
17.09.04 22:35:51 404 GET /index.html
我也尝试过提供bs-config.js:
"use strict";
module.exports = {
"server": {
"baseDir": "src",
index: "i/index.3.html",
"directory":true,
"routes": {
"/node_modules": "node_modules"
}
// middleware,: {
// // overrides the second middleware default with new settings
// 1: require('connect-history-api-fallback')({index: '/index.3.html', verbose: true})
// }
}
}
并运行lite-server:
> lite-server -c=bs-config.js
但行为是一样的。
问题:如何为lite-server覆盖bs-config的server.index?
答案 0 :(得分:0)
lite-server的config-default.js在其第二个中间件“fallback”函数中设置索引。这似乎是在覆盖bs-config设置。
所以解决方案似乎是,覆盖中间件以根据需要设置索引。
BS-config.js:
module.exports = {
"server": {
"baseDir": "src",
"routes": {
"/node_modules": "node_modules"
},
middleware: {
// overrides the second middleware default with new settings
1: require('connect-history-api-fallback')({
index: '/index.3.html',
htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'] // systemjs workaround})
}
}
}
注意: 1.如果未来版本的lite-server更改了default-config的中间件,将索引回退放在中间件函数数组的不同索引位置,或者设置不同的响应头,则需要更改此bs-config解决方案相应
的引用: Browserync文档:https://browsersync.io/docs/options
lite-server:https://github.com/johnpapa/lite-server