koa-router 返回404
来源:5-3 服务端渲染的entry配置

weibo_姚望微晨_0
2018-08-22
{ request:
{ method: 'GET',
url: '/',
header:
{ host: 'localhost:3333',
connection: 'keep-alive',
'cache-control': 'max-age=0',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9' } },
response:
{ status: 404,
message: 'Not Found',
header:
{ 'content-type': 'text/plain; charset=utf-8',
'content-length': '9' } },
app: { subdomainOffset: 2, proxy: false, env: 'development' },
originalUrl: '/',
req: '<original node req>',
res: '<original node res>',
socket: '<original node socket>' }
2回答
-
weibo_姚望微晨_0
提问者
2018-08-27
路由代码
const Router = require('koa-router')()
const axios = require('axios')
const path = require('path')
const fs = require('fs')
const MemoryFS = require('memory-fs')
const webpack = require('webpack')
const VueServerRenderer = require('vue-server-renderer')
const serverRender = require('./server-render')
const serverConfig = require('../../build/webpack.config.server')
const serverCompiler = webpack(serverConfig)
const mfs = new MemoryFS()
serverCompiler.outputFileSystem = mfs
// console.log('--------------------------------')
// console.log(serverConfig.output.path)
let bundle
serverCompiler.watch({}, (err, stats) => {
if (err) throw err
stats = stats.toJson()
stats.errors.forEach(err => console.log(err))
stats.warnings.forEach(warn => console.warn(err))
const bundlePath = path.join(
serverConfig.output.path,
'vue-ssr-server-bundle.json'
)
bundle = JSON.parse(mfs.readFileSync(bundlePath, 'utf-8'))
console.log('new bundle generated')
})
const handleSSR = async (ctx) => {
console.log(ctx)
if (!bundle) {
ctx.body = '你等一会,别着急......'
return
}
const clientManifestResp = await axios.get(
'http://127.0.0.1:8001/public/vue-ssr-client-manifest.json'
)
const clientManifest = clientManifestResp.data
const template = fs.readFileSync(
path.join(__dirname, '../server.template.ejs'),
'utf-8'
)
const renderer = VueServerRenderer
.createBundleRenderer(bundle, {
inject: false,
clientManifest
})
await serverRender(ctx, renderer, template)
}
// const router = new Router()
Router.get('*', handleSSR)
module.exports = Router
00 -
Jokcy
2018-08-24
然后呢?你的路由代码呢?
052018-09-12
相似问题