使用nuxt.js服务端渲染框架,引入iview2后,使用任何组件都会报错,而且打包之后组件样式都消失

发布于 2022-09-04 19:02:12 字数 1837 浏览 14 评论 0

我做毕设项目遇到的一个问题

使用nuxt框架的Nuxt.js + Express构建了一个项目

引入iview2后,组件在dev模式下都可以正常显示,但是控制台会报错

[Vue warn]: The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside <p>, or missing <tbody>. Bailing hydration and performing full client-side render. 

我想着报错还正常显示就忍一下...

然后npm run build之后,再npm start发现组件的样式都没了,想知道怎么解决这个问题

在iView github上发现一个关闭的issues,跟我遇到的一样,但是关闭了,也没解决,就一起贴上来了,原issues:https://github.com/iview/ivie...
(没解决怎么关闭了...)

iView 版本号

2.0.0-rc.5

操作系统/浏览器 版本号

window10/Chrome 56

Vue 版本号

2.2.4

能够复现问题的在线示例(重要)

这个服务渲染的在线demo不好整,大致步骤是:

vue init nuxt/starter myapp
cd myapp
yarn

npm run dev
启动后,创建插件:

import Vue from 'vue'

if (process.BROWSER_BUILD) {
  Vue.use(require('iview'))
}
在nuxt.config.js引入

plugins: ['~plugins/vue-iview'],
css: ['iview/dist/styles/iview.css'],
此时一切正常。iview组件样式都能正常引入,然后在index.vue里加入如下代码:

<div style="background:#eee;padding: 20px">
        <Card :bordered="false">
            <p slot="title">无边框标题</p>
            <p>无边框内容填充无边框内容填充无边框内容填充无边框内容填充无边框内容填充无边框内容填充无边框内容填充无边框内容填充无边框内容填充无边框内容填充无边框内容填充。</p>
        </Card>
    </div>

使用四五个组件浏览器都会出现警告:

[Vue warn]: The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside <p>, or missing <tbody>. Bailing hydration and performing full client-side render. 

复现步骤

问题现象,以及你期望的结果是怎样的?

不要出现警告

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

关于从前 2022-09-11 19:02:12

作者已经回答了, iView不支持ssr, 想用vue组件库, 又支持ssr的, 可以用element-ui

倥絔 2022-09-11 19:02:12

图片描述

遇到同样的问题,你要在这个配置里里面,设置ssr:true就可以了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文