react-koa2-ssr icon indicating copy to clipboard operation
react-koa2-ssr copied to clipboard

ctx.req.url打印出来的路径问题

Open wjun52 opened this issue 6 years ago • 7 comments

我在render方法中打印出来ctx.req.url得到的是/favicon.ico,并不是/或者/about

wjun52 avatar Apr 24 '18 09:04 wjun52

我回去看一下 ,这个点还在加班😕

yangfan0095 avatar Apr 24 '18 13:04 yangfan0095

@guanren 应该是顺序写错了 server/app.js 入口文件

把这行代码app.use(require('koa-static')(__dirname + '../build'))app.use(index.routes(), index.allowedMethods()) 这两个中间件调用顺序改一下应该就可以了。

koa2 是洋葱模型, 中间件进入的时候会被压倒一个栈里面 ,执行compose 方法来调用中间件函数.源码如下 从右往左。

 return dispatch(0)
    function dispatch (i) {
      if (i <= index) return Promise.reject(new Error('next() called multiple times'))
      index = i
      let fn = middleware[i]
      if (i === middleware.length) fn = next
      if (!fn) return Promise.resolve()
      try {
        return Promise.resolve(fn(context, function next () {
          return dispatch(i + 1)
        }))
      } catch (err) {
        return Promise.reject(err)
      }
    }

server/app.js

app.use(json())
app.use(logger())
app.use(require('koa-static')(__dirname + '../build'))

// routes
app.use(index.routes(), index.allowedMethods())
app.use(staticCache (path.resolve(__dirname,'../build'),{
  maxAge: 365 * 24 * 60 * 60,
  gzip:true
}));

yangfan0095 avatar Apr 24 '18 13:04 yangfan0095

@guanren 我已经改了 你pull 一下 看可以吗🙂

yangfan0095 avatar Apr 24 '18 13:04 yangfan0095

listen on:3008 <-- GET /static/js/main.js.map /static/js/main.js.map <-- GET /main.css.map /main.css.map <-- GET /static/css/main.css.map /static/css/main.css.map --> GET /main.css.map 200 47ms 260b --> GET /static/css/main.css.map 200 41ms 269b <-- GET /service-worker.js /service-worker.js --> GET /service-worker.js 200 23ms 1.33kb

打印出来的还是文件路径,导致并没有到renderToString这一步

wjun52 avatar Apr 25 '18 01:04 wjun52

对的,我也是发现这个问题,导致页面源码无法渲染出对应的源码而完全走了静态资源

nativeyou avatar Jul 12 '18 19:07 nativeyou

同问,并没有看到renderToString的内容

zhangyanling77 avatar Nov 22 '18 06:11 zhangyanling77

listen on:3008 <-- GET /static/js/main.js.map /static/js/main.js.map <-- GET /main.css.map /main.css.map <-- GET /static/css/main.css.map /static/css/main.css.map --> GET /main.css.map 200 47ms 260b --> GET /static/css/main.css.map 200 41ms 269b <-- GET /service-worker.js /service-worker.js --> GET /service-worker.js 200 23ms 1.33kb

打印出来的还是文件路径,导致并没有到renderToString这一步

请问大家有什么解决办法吗?

beileixinqing avatar Jan 03 '19 09:01 beileixinqing