【日常bug记录】

 项目场景:

项目是基于会展方面的大屏展示,以及数据的交互之类的


问题描述

提示:这里描述项目中遇到的问题:

1.项目启动的时候爆出的问题:一直出错项目起不来(启动其他项目没问题)

2.项目启动完毕后,样式出现问题也就是已经发版线上的项目展示没问题,本地跑起来迭代死翘翘

涉及适配问题

3.附件上传问题的总结,包括app开发和这个web的


原因分析以及解决方案:

提示:这里填写问题的分析:

1.报错的第一反应当然是复制去百度,当然还是得总结下,防止忘记,归根结底就是node版本与npm版本不对应,也因为这个原因自己去学习了下利用nvm来对自己node的版本进行管理,主要下载这个nvm匹配环境具体可以参考其他大神文章,现在切换node版本只需要

nvm ls                      // 看安装的所有node.js的版本
nvm list available      // 查显示可以安装的所有node.js的版本

nvm install 版本号      // 例如:nvm install 14.19.0

nvm use 版本号           // 切换到使用指定的nodejs版本

node -v                      // 检测是否切换完成,新开一个cmd
 

其他的可以参考别人的博客,很详细Node多版本的切换工具nvm安装教程_多放香菜少加葱的博客-CSDN博客_node 版本切换工具

2.项目上线显示正常但是拉到本地死翘翘的样式问题,主要在于大屏的适配上面,当时只道做了适配,是利用lib-flexible和 px2rem-loader进行的适配,当时觉得线上没问题,就本地不需要倒腾什么,但是就是怎么都显示不正常

无赖只能去把这种方式的适配原理去了解下,迭代这个事情还是得把别人的代码搞明白,深刻的就发现其中的玄机,原因在于在屏幕尺寸超出一定分辨率后便不再适配。

所以在我们进行了其他操作后需要对源码进行一定的修正

打开./node_modules/lib-flexible/flexible.js,我们看到如下的源码:

function refreshRem(){
    var width = docEl.getBoundingClientRect().width;
    if (width / dpr > 540) {
        width = 540 * dpr;
    }
    var rem = width / 10;
    docEl.style.fontSize = rem + 'px';
    flexible.rem = win.rem = rem;
}

也就是说,当屏幕宽度除以dpr(dpr是一个倍数,此处一般为1)大于540这个特定值的时候,那么就不再进行适配了。

所以我们的样式乱的一批那么这个时候我们只要修改

function refreshRem(){
    var width = docEl.getBoundingClientRect().width;
    if (width / dpr < 1980) {
        width = 1980 * dpr;
    } else if (width / dpr > 5760) {
        width = 5760 * dpr;
    }
    var rem = width / 10;
    docEl.style.fontSize = rem + 'px';
    flexible.rem = win.rem = rem;
}

按照你自己的设计稿的尺寸要求灵活变动,重启项目就没啥大事了

3.讲到附件上传这个问题,有点服了我自己(就是无语),当时利用uniapp开发app的时候,上传附件需要formData的形式,因为接口通用web端。但是选择uni.chooseImage, 拍完之后上传接口要求formData格式,但是uniapp不能 new File, 所以无法转换。可以使用plus.uploader.createUpload 来上传formData格式。文章参考uniapp拍照之后上传formData格式到后台 - 简书

具体代码看别人的,对照自己的进行修改,本人试过没啥问题,但是只能真机运行试验

最无语的是web端的,明明饿了么封装的那么好,文档那么清晰,偏偏我就是离谱的每次在这打转,记录下傻不拉几的日常

需求是实现一个只上传txt的附件,长这个样子

 拆解也就是三步走:1.样式2.限制类型3.后端接口上传

          <el-form-item label="附件" style="width: 500px">
                  <el-upload
                    class="upload-demo"
                    ref="upload"
                    action="https://jsonplaceholder.typicode.com/posts/"
                    :show-file-list="false"
                    :http-request="uploadFile"
                    :before-upload="beforeFujianUpload"
                  >
                    <el-button
                      type="primary"
                      style="width: 171px; height: 38px"
                    >
                      <img
                        src="@/assets/image/shangchuan@2x.png"
                        width="28px"
                        height="20px"
                        alt=""
                      />
                      <span
                        style="
                          font-size: 16px;
                          display: inline-block;
                          vertical-align: top;
                        "
                        >附件</span
                      ></el-button
                    >
                    <span
                      slot="tip"
                      class="el-upload__tip"
                      style="color: #d0021b"
                    >
                      (注:限定格式:.txt )
                    </span>
                  </el-upload>
                </el-form-item>

  beforeFujianUpload(file) {
      if (file.type != "" || file.type != null || file.type != undefined) {
        //截取文件的后缀,判断文件类型
        const FileExt = file.name.replace(/.+\./, "").toLowerCase();
        //计算文件的大小
        const isLt5M = file.size / 1024 / 1024 / 1024 < 100; //这里做文件大小限制
        //如果
        if (!isLt5M) {
          this.$showMessage("上传文件大小不能超过 100kb!");
          return false;
        }
        //如果文件类型不在允许上传的范围内
        if (FileExt === "txt") {
          return true;
        } else {
          this.$message.error("上传文件格式不正确!");
          return false;
        }
      }
    },

    uploadFile(file) {
      console.log(file);
      // 把文件放入 FormData 进行提交
      const param = new FormData();
      param.append("fileUpload", file.file);
      console.log(param);
      uploadFile(param).then((response) => {
        // TODO 一些关闭弹框,上传成功提示等
      });
    },

每次看着参数贼多啊,都不知道用还是不用,反正就两大步后面,其他的啥移除或者删除啥的就再加~到此为止


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值