Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 555|回复: 0

解决Windows和Linux使用npm打包js和css文件不同的问题

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-6-4 05:19:42 | 显示全部楼层 |阅读模式

    1、问题出现

      最近公司上线前端H5页面,使用npm打包,特别奇怪的是每次打包发现css和js文件与Windows下打包不一致(网页使用Windows环境开发),导致前端页面功能不正常。

    2、问题排查

      ① 更换服务器:无用

      ② 更换npm版本:无用

      ③ 在另一台Windows上打包:无用

      ④ 等等网上说的方法:无用

    3、我是如何确认是css和js文件不一致的

      ① 首先我在Linux打包机器上正常打包

      

      ② 打包过程中无任何报错,之前上线也是如此。(所以一开始并没有发现是打包问题)

      ③ 通过浏览器打开css和js文件,发现与正常页面确实有所差异,于是让前端开发重新打了一次包与我打包的进行比对

      

      ④ 发现最重要的一个js文件确实不一样,于是确认是npm打包出现问题。

    4、我是如何找出npm打包问题的原因的

      利用npm打包上线需要经过以下步骤:

      ① 克隆代码到本地

      ② 安装npm依赖环境

      ③ build

      于是断定问题出现在了npm依赖环境上

      安装npm依赖环境:npm install --registry=https://registry.npm.taobao.org

      上述命令是根据package.json进行安装的,安装完成后,使用npm list查看对应模块版本,发现都被默认升级

      再次尝试:

        ① 使用命令npm shrinkwrap锁定依赖版本:无用

        ② 单独安装模块:无用

      到此时已经发现问题的根源,但是无法解决,还是对npm不太了解。

    5、再次尝试

      向开发要来了他Windows下npm所用的所有环境和模块,准备尝试手动安装,并保持全部一致。

      安装过程中,突然想起来当初迁移python项目时也出现过相似的环境依赖问题,当时最终的解决办法时直接拷贝整个python环境到新环境,然后解决问题。

      于是再次向开发要了他当前环境的node_modules整个目录,首先在Windows上尝试。

      解压后执行命令:npm list

      发现和开发Windows的模块一致,继续执行npm run build

      发现激动人心的结果

      打包完毕后,js文件与开发打包的保持一样,上线测试环境,一切正常。

    6、最终解决

      按照相同的方法,拷贝整个node_modules目录到Linux打包机上。

      执行nvm list:结果一致

      执行npm run build,再次报错,如下:意思就是Node.js 6.X是基于Windows 64-bit,不支持当前Linux环境

       网上搜索此错误查到结果,执行命令:npm rebuild node-sass,即可解决。(也可注释build的配置.【..(config.dev.useEslint ? [createLintingRule()] : [])】)

     

      再次打包:npm run build,终于看到久违的结果

      

      至此,Windows下的项目迁移到Linux上完毕。问题的根本原因:依赖

     

     

      

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-2 15:04 , Processed in 0.053693 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表