• 记录一次由cnpm引发的问题


    背景:
    前端项目没有做任何修改的情况下,重新在jenkins上构建一次,项目瘫了,跑不起来了。

    构建完之后,平台就出现了如下报错,页面空白一片

    在这里插入图片描述
    看到这个错误想到的第一个排查问题的方案: 需要定位是哪里报的这个错误
    于是前端 打包时开启sourcemap 进行问题定位,发现是以下代码出现错误:
    在这里插入图片描述
    可以看出 这不是我们的业务代码。

    开始排查问题:
    一:首先确定是否是项目问题,是否哪里代码出现错误
    1: 在本地运行这个项目,是没有任何问题的。
    2: 前端同学没有修改代码,不需要回滚
    3:构建项目最原始的tag,还是报这个错误

    二:确定是否为服务器、jenkins构建问题
    1: 服务器上的node版本和我们本地开发的大版本是一致的,这就排除了node版本的问题。
    2: 清除服务器上npm缓存等一些操作,发现还是不行。
    3: 运维同学说这个项目没有做任何修改

    后来发现服务器上是用cnpm进行install包的,换成了npm, 重新编译一遍,问题就没有了。
    所以可以确定是因为使用cnpm intall 导致的问题。

    后来检查服务器上npm的源, 发现也是taobao的(这次的问题跟源没关系,这是排查问题的时候可能出现问题的地方)。

    那么为什么用cnpm install 就会有问题呢?
    因为使用cnpm可能出现漏包,丢包的现象
    具体原因不知道, 反正是以后都不会用它了。
    无论在哪个环境,构建的时候都使用npm, 一定不会出错就对了。

    在jenkins构建之前,有两个命令, npm installnpm run build
    我们只需要保证install的时候用的是npm即可
    使用cnpm install会有丢包风险, 这里保险起见推荐使用npm install。

    至于用什么去build, 丝毫没有影响, 因为build是根据webpack配置去执行的,webpack的配置都是一样的,这里不会出现问题, build执行的是webpack的命令

    如果想看到底差了哪个包, 可以在本地使用cnpm和npm都构建一遍,对比文件差异。(这个没啥大意义)

    上图是在本地打包和服务器上打包之后的文件哈希值, 发现如果文件没有差异, 哈希值是一样的,这里应该做了文件对比差异。

  • 相关阅读:
    百分比组件
    【giszz笔记】产品设计标准流程【4】
    Web APIs——DOM
    【算法题】割后面积最大的蛋糕
    无涯教程-JavaScript - DEGREES函数
    如何使用腾讯云GPU云服务器搭建训练 ViT 模型?
    快速构建一个简单的对话+问答AI (上)
    数据库及ADO.NET学习(三)
    Windows UIA自动化测试框架学习--获取qq好友列表
    LCD DRM驱动框架分析二
  • 原文地址:https://blog.csdn.net/weixin_46034375/article/details/126024198