组件库系列五:vuepress遇到的坑

前面四篇文章已经基本完成了一个组件库,直接发布文档就可以了。但是没想到遇到这么多问题(坑)。

过程可以查看部署 | VuePress (vuejs.org),但是坑还是踩过才知道。

先总结一下前面组件库文档搭建过程的文档,之前文章中有提到过,这里一起总结一下。

搭建过程

  1. 安装sass-loader和node-sass报错

    报错原因是sass-loader版本过高。

    查阅资料后,按下面命令下载

    yarn add sass-loader node-sass webpack --save-dev
    

    但还是没有解决问题,反而引入了webpack(后面的错误应该是这时候引入的)

    然后尝试降低sass-loader版本,

    还是报错,因为与node-sass版本不匹配

    然后就去找node-sass和sass-loader的版本配合

    yarn add sass-loader@10.1.1 -D
    yarn add node-sass@5.0.0 -D
    
  2. core-js报错

    // 报错信息
    Error from chokidar (C:\): Error: EBUSY: resource busy or locked, lstat ‘C:\hiberfil.sys‘
    

    解决yarn add core-js@2 重新装一下

  3. vuepress不自动更新

    本地开发模式运行Vuepress 1.x 时,浏览器不能自动更新

    在 package.json 中将运行命令 由

    "dev": "vuepress dev docs"
    

    改为

    "dev": "vuepress dev docs --temp .temp"
    

    文件保存后自动更新一下页面,但是不是很快速,有些地方修改了不更新。

部署过程

  1. webpack 重复引入

    // 报错信息
    TypeError: Cannot read property 'tapAsync' of undefined
    at C:\Users\USER\Desktop\github\Mui\por-ui-doc\node_modules\vue-server-renderer\server-plugin.js:52:39
    

    重复引入webpack,因为vuepress内置了webpack,但是自己又引入webpack(应该是前面错误引入的)

    解决:

    yarn remove webpack
    

    这里注意不要删掉node_modules,然后上到package.json文件中该包的信息,再进行 npm install 进行下载。因为这种方式麻烦而且依赖重新下载可能又会出错。(看了网上的有同样的问题,就是这么做的,反正跳进另一个坑)

    解决了一个,继续打包,又报错了。。。

  2. window is not defined

    问题原因

    引入某些库时会出现运行时没任何问题,而打包时报window is not defined或者document is not defined导致打包时失败的话,这是由于vuepress采用的是服务端渲染 所以此时找不到对应的window。

    这个问题官方有解决方案:在 Markdown 中使用 Vue | VuePress (vuejs.org)

    在.md文件中,加入一组标签:

    <ClientOnly>
      <NonSSRFriendlyComponent/>
    </ClientOnly>
    

    也可以使用入口文件 enhanceApp.js 中,修改引入方式,这里注意Vue.use()中default必须保留。

    export default ({ Vue, options, router, siteData }) => {
      Vue.mixin({
        mounted() {
          import ('por-ui').then(function(porUI) {
            Vue.use(porUI.default)
          })
        },
      })
    };
    

    修改之后还是一样的报错问题(又改了好几遍),原来是toast插件也需要再这里引入

    Vue.prototype.$toast = (porUI.Plugin)
    

    继续打包。。。终于没报错了

    那打开项目看看。。。

  3. 项目出现黑色方块

    本地直接打开html出现黑色方块,需要在项目中安装vuepress-plugin-serve

    安装后,或者直接部署文档,文件还是没有样式,就需要设置base

    写两个,一个用于Dev,一个用于Build。

    //base: "/",*
    base: "./",
    

    这里的base是根据官方文档修改的,这里却出问题了

    修改后,重新打包,这次首页正常了

    点击进入看看,又出问题了,直接404

  4. 页面404

    打开项目下的 node_modules@vuepress\core\lib\client 下的 app.js 文件,将mode注释掉就行了,让它默认为hash

    mode: 'history'
    

    修改好了,重新打包,这次终于没有问题了

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值