gpt4 book ai didi

javascript - 没想到服务器 HTML 在
中包含一个

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:29:31 28 4
gpt4 key购买 nike

我在一个使用以下项目的项目中工作:

  • react / react -dom@16.9.0
  • @loadable/组件
  • 样式组件
  • react-router-dom

应用程序呈现服务器端和客户端端。

我正在使用 @loadable/component 以这种方式动态代码拆分。

路由器.tsx

import * as React from 'react'
import loadable from '@loadable/component'
import { Route, Switch } from 'react-router-dom'

const NotFound = loadable(() =>
import('../components/NotFound/NotFound' /* webpackChunkName: "notfound" */)
)

const routes = (
<Switch>
<Route component={NotFound} />
</Switch>
)

export default routes

加载页面时,控制台上出现此错误,页面似乎闪烁了一秒钟。

react-dom.development.js:546 Warning: Did not expect server HTML to contain a <div> in <main>.

当我检查双方(服务器/客户端)的输出时,它们相同

当我像下面这样删除 @loadable/component 时,它会工作并且错误消失了。

router-without-loadable.tsx

import * as React from 'react'
import { Route, Switch } from 'react-router-dom'
import NotFound from '../components/NotFound/NotFound'

const routes = (
<Switch>
<Route component={NotFound} />
</Switch>
)

export default routes

似乎与 @loadable/component 有关,但我不是 100% 确定。

最佳答案

终于有了答案:

  1. 为了@loadable/component正常工作,你需要在以这种方式归档。
const NotFound = loadable(() =>
import(/* webpackChunkName: "notfound" */ '../components/NotFound/NotFound')
)

引用:

https://github.com/smooth-code/loadable-components/issues/23

  1. 更重要的是,在服务器端,您需要将应用程序包装在 ChunkExtractorManager 中并传递客户端提取器(我传递的是服务器提取器,文档中不是很清楚)。
const statsFile = path.resolve('./wwwroot/dist/loadable-stats.json')
const extractor = new ChunkExtractor({
statsFile,
entrypoints: ['client'] // name of the proper webpack endpoint (default: main)
})

<ChunkExtractorManager extractor={extractor}>
<App />
</ChunkExtractorManager>

这里有一个关于如何实现它的正确清晰的例子:

https://github.com/iamssen/seed

2019 年 9 月 24 日更新

添加到官方文档

https://www.smooth-code.com/open-source/loadable-components/docs/server-side-rendering/#chunkextractor-entrypoints

关于javascript - 没想到服务器 HTML 在 <main> 中包含一个 <div>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57725515/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com